web-dev-qa-db-ja.com

コレクションをループするVBA

SelectManyFiles関数で選択したファイルのコレクションがあり、コレクション関数の各図面で複数のプライベートサブを実行したい。ここに私のコードがあります:

Sub Main()

Dim Drawing As Object
Dim Drawings As Collection
Set Drawings = SelectManyFiles()

For Each Drawing In Drawings
    'Call multiple private subs to run on each drawing
Next Drawing
End Sub

ループに何か問題があると思いますが、正確にはわかりません!どんな助けも大歓迎です。

11
GhostTiger

SelectManyFilesによって返されるコレクションは、オブジェクトのコレクションを返していません。おそらく文字列のコレクションを返しますが、それは単なる推測です。サブをこれに変更します

Sub Main()

Dim Drawing As Variant
Dim Drawings As Collection
Set Drawings = SelectManyFiles()

For Each Drawing In Drawings
    Debug.Print TypeName(Drawing)
Next Drawing
End Sub

Debug.Printが提供するものをご覧ください。スカラー(string、long、double、Booleanなど)の場合、DrawingをVariantとして宣言する必要があります。すべてのコレクションアイテムがオブジェクトである場合にのみ、Objectを使用できます。

12
Dick Kusleika