VBA通过集合循环

时间:2016-03-28 20:05:15

标签: vba loops collections autocad

我有一个我在SelectManyFiles函数中选择的文件集合,我想在集合函数中的每个Drawing上运行多个私有subs。这是我的代码:

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

我觉得循环有问题但确实不确定!任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:11)

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声明为变体。只有当所有集合项都是对象时,才能使用Object。

答案 1 :(得分:1)

试试

    FOR X = 1 TO DRAWING.COUNT
        'STUFF HAPPENS
    NEXT X