我通过dict As New Dictionary
在Excel VBA中使用词典(并添加对脚本运行时的引用)。当我在调试期间尝试监视这些时,我只能看到字典中的键,而不是每个键的相应值。
有没有办法看到这个价值?它会让我更容易调试。
编辑:根据您的回答,没有简单的解决方案,但我可以执行以下操作。
使用全局变量Dim d_obj As Object
并持续监视它,每当我需要查找字典的值时,我输入到即时窗口Set d_obj(key) = ...
,我将能够看到值监视器窗口。
另外,我可以编写一个函数,它接收字典并将值作为列表返回,并在直接窗口中类似地使用此函数。感谢所有人!
答案 0 :(得分:20)
我通常在即时窗口中键入dict.items
,选择它并按Shift + F9将其插入监视窗口。
或者,这里是即时窗口的单行,列出所有项目:
for each i in dic.Items: debug.Print i: next
答案 1 :(得分:1)
我使用了一个递归函数,该函数可用于在监视窗口中显示所有简单类型变量和所有嵌套字典的内容。产生的输出格式为:
Fred:rabbit; Tiddles:cat; Fluffy:cat; Food:[1:lettuce; 2:biscuits; ];
其中键和值用“:”分隔,项目用“;”分隔,嵌套字典显示在方括号中。
Public Function DictionaryContents(ByVal dcDictionary, Optional ByVal boolShowKeyIndex As Boolean = False)
Dim Keys
Keys = dcDictionary.Keys
Dim i As Long
Dim stIndex As String
Dim stOutput As String
stOutput = vbNullString
For i = 0 To dcDictionary.Count - 1
If boolShowKeyIndex Then
stIndex = "(" & i & ")"
End If
stOutput = stOutput & Keys(i) & stIndex & ":"
If IsObject(dcDictionary(Keys(i))) Then
stOutput = stOutput & "[" & DictionaryContents(dcDictionary(Keys(i)), boolShowKeyIndex) & "]"
Else
stOutput = stOutput & dcDictionary(Keys(i))
End If
stOutput = stOutput & "; "
Next i
DictionaryContents = stOutput
End Function