2016-03-28 12 views
2

SelectManyFiles関数で選択したファイルのコレクションがあり、コレクション関数の各描画で複数のプライベートサブを実行したいとします。私のコードは次のとおりです:VBAコレクションをループする

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 

私はループに何か問題がありますが、確かに正確ではないと思います!どんな助けもありがとうございます。

+0

これが機能するかどうかはわかりますか?あなたが試したことがあり、動作しないことを知っている他のコードがありますか? –

+0

これは動作しません。それは私に必要なオブジェクトのエラーを与える。 – GhostTiger

+0

「ドローイング」の種類は何ですか? "コレクション"クラスは列挙可能ですか? –

答えて

2

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が提供する内容を確認してください。スカラー(文字列、ロング、ダブル、ブールなど)の場合は、DrawingをVariantとして宣言する必要があります。すべてのコレクション項目がオブジェクトである場合のみ、Objectを使用できます。

関連する問題