与此问题类似,Scripting.Dictionary在VBA中使用对象时,下面代码的结果是意外的.
Option Explicit
Sub test()
Dim d As Variant
Dim i As Integer
Dim s As String
Set d = CreateObject("Scripting.Dictionary")
d.Add "a", "a"
Debug.Print d.Count ' Prints '1' as expected
For i = 1 To d.Count
s = d.Item(i)
Debug.Print s ' Prints ' ' (null) instead of 'a'
Next i
Debug.Print d.Count ' Prints '2' instead of '1'
End Sub
Run Code Online (Sandbox Code Playgroud)
使用从零开始的索引,可以获得相同的结果:
For i = 0 To d.Count - 1
s = d.Item(i)
Debug.Print s …Run Code Online (Sandbox Code Playgroud)