【问题标题】:VBA debugger shows only 256 elements of a collectionVBA 调试器仅显示集合的 256 个元素
【发布时间】:2015-06-16 12:06:30
【问题描述】:

我正在处理 Excel 宏。有没有一个选项可以让调试器像数组一样显示所有元素?

如果不是,唯一的解决方法是将我的类对象在集合膨胀后存储在数组中吗?

【问题讨论】:

    标签: excel vba debugging collections vbe


    【解决方案1】:

    您可以使用debug.print 并将输出写入即时窗口并以这种方式绕过限制。

    我几乎可以肯定没有办法增加这个限制,但也许其他人可以给出一个定义。回答这个问题。

    【讨论】:

    • 我认为不可能改变这个限制。对 VBE 对象模型的搜索没有显示任何控制调试器的方法(尽管我可能遗漏了一些东西)。字典似乎也有同样的限制。
    • 你的例子正是我的意思。使用循环或 for next 语句写入即时窗口。加一个。
    • 你给了我这个想法——但我认为让输出看起来尽可能与你在本地窗口中看到的相似是一个很好的调整
    • 请注意,debug.print 打印到的即时窗口也有行数限制,即 200。它将回收超出此范围的行(将它们推出)。所以它比 256 还要糟糕。
    • 您可以将行换行以使每行包含多个项目,从而增加限制。但原则上你是对的!很适合指出来
    【解决方案2】:

    答案似乎是否定的——但下面的 sub 可能会有所帮助。一个简单的实验表明,它可以在调试模式下在即时窗口中使用:

    Sub display(col As Collection)
        Dim i As Long
        Dim it As Variant
        Dim itType As String
        For i = 1 To col.Count
            it = col.Item(i)
            itType = TypeName(it)
            Debug.Print "Item " & i & " -- Value: " & it & " -- Type: " & itType
        Next i
    End Sub
    

    【讨论】:

    • 添加了一个更新的子以覆盖数组Debug.Print "Item " & i & " -- Values: [" & Join(it, ", ") & "] -- Type: " & itType@JohnColeman 无意窃取任何选票,如果您希望改进您​​的答案以包含我的建议,请随时这样做,我将删除我的回复
    • 请注意,debug.print 打印到的即时窗口也有行数限制,即 200。它将回收超出此范围的行(将它们推出)。所以它比 256 还要糟糕。
    【解决方案3】:

    在我的例子中,集合的元素可以是数组。

    John Coleman 的 sub 可以改进以覆盖(至少一维)数组:

    Sub display(col As Collection)
        Dim i As Long
        Dim it As Variant
        Dim itType As String
        For i = 1 To col.Count
            it = col.item(i)
            itType = TypeName(it)
            If Not IsArray(it) Then
                Debug.Print "Item " & i & " -- Value: " & it & " -- Type: " & itType
            Else
                Debug.Print "Item " & i & " -- Values: [" & Join(it, ", ") & "] -- Type: " & itType
            End If
        Next i
    End Sub
    

    【讨论】:

    • 请注意,debug.print 打印到的即时窗口也有行数限制,即 200。它将回收超出此范围的行(将它们推出)。所以它比 256 还要糟糕。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多