【问题标题】:VBA Looping through a CollectionVBA循环遍历集合
【发布时间】:2016-07-16 04:14:49
【问题描述】:

我有一个在 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

我认为循环有问题,但不确定!任何帮助表示赞赏。

【问题讨论】:

  • 所以你知道或不知道这是否有效?您是否有任何其他代码您尝试过并且知道不起作用?
  • 这不起作用。它给了我 Object required 的错误。
  • “图纸”的类型是什么? “Collection”类是可枚举的?
  • 它们是 AutoCAD .dwgs,是的

标签: vba loops collections autocad


【解决方案1】:

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。

【讨论】:

    【解决方案2】:

    试试

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

    【讨论】:

    • 虽然此代码可能会为问题提供解决方案,但最好添加有关其工作原理/方式的上下文。这可以帮助未来的用户学习并最终将这些知识应用到他们自己的代码中。解释代码时,您也可能会得到用户的积极反馈/赞成。
    猜你喜欢
    • 2012-11-03
    • 1970-01-01
    • 2018-06-16
    • 2014-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多