製品のオブジェクトがコレクションであるかのように参照されていますが、そうではありません。例えば、製品のクラスが ProdADT で、それがコレクションのクラスでなければ、次のようになります。
Dim varV As Variant Set varV = New ProdADT("abc") ForAll X In varV ' Illegal. '... End ForAll
参照を削除するか、そのターゲットをコレクション名に置き換えてください。