【发布时间】:2015-06-16 12:06:30
【问题描述】:
我正在处理 Excel 宏。有没有一个选项可以让调试器像数组一样显示所有元素?
如果不是,唯一的解决方法是将我的类对象在集合膨胀后存储在数组中吗?
【问题讨论】:
标签: excel vba debugging collections vbe
我正在处理 Excel 宏。有没有一个选项可以让调试器像数组一样显示所有元素?
如果不是,唯一的解决方法是将我的类对象在集合膨胀后存储在数组中吗?
【问题讨论】:
标签: excel vba debugging collections vbe
您可以使用debug.print 并将输出写入即时窗口并以这种方式绕过限制。
我几乎可以肯定没有办法增加这个限制,但也许其他人可以给出一个定义。回答这个问题。
【讨论】:
debug.print 打印到的即时窗口也有行数限制,即 200。它将回收超出此范围的行(将它们推出)。所以它比 256 还要糟糕。
答案似乎是否定的——但下面的 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 还要糟糕。
在我的例子中,集合的元素可以是数组。
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 还要糟糕。