在 excel vba 中打印 collection 项以立即 window
printing a collection item to immediate window in excel vba
我想知道如何将 collection 中的项目打印到 excel VBA 中的直接 window?我想为每个 collection 项设置一个 collection 或为每个 collection 项设置一个数组,这样更容易从中提取信息。这是我正在谈论的一些示例代码
Sub test()
Dim c As Collection
Dim a As Collection
Set a = New Collection
For i = 1 To 10
Set c = New Collection
c.Add Array("value1", "value2", "value3","valvue4, "value5"), "key1"
c.Add "value2", "key2"
c.Add "value3", "key3"
c.Add "value4, "key4"
c.Add "value5", "key5"
a.Add c, c.Item(1)
'lets say I wanted to print value4 or value1 from the 1st item
Debug.Print a.Item(1(2))
Next i
End Sub
这似乎有效:
Sub ytrewq()
Dim c As Collection
Set c = New Collection
c.Add "x", CStr("x")
c.Add "y", CStr("y")
c.Add "z", CStr("z")
i = 2
MsgBox c.Item(i)
Debug.Print c.Item(i)
End Sub
要添加到@Gary's Student 的回答中,您不能使用整数作为集合的键。因此,您可以使用 Cstr 函数将它们转换为字符串,也可以改用字典。如果您决定使用字典,请确保启用 Microsoft Scripting Runtime(在工具 -> 参考下)。我在下面添加了一些示例。
Sub collExample()
Dim i As Integer
Dim c As Collection
Set c = New Collection
For i = 1 To 10
c.Add 2 * i, CStr(i)
Next i
'keys cant be integers
'see https://msdn.microsoft.com/en-us/library/vstudio/f26wd2e5(v=vs.100).aspx
For i = 1 To 10
c.Item (i)
Next i
End Sub
Sub dictExample()
Dim d As New Dictionary
Dim i As Integer
For i = 1 To 10
d(i) = 2 * i
Next i
Dim k As Variant
For Each k In d
Debug.Print k, d(k)
Next k
Dim coll As New Collection
coll.Add "value1"
coll.Add "value2"
coll.Add "value3"
Set d("list") = coll
Dim newCol As Collection
Set newCol = d("list")
Dim v As Variant
For Each v In newCol
Debug.Print v
Next v
End Sub
我想知道如何将 collection 中的项目打印到 excel VBA 中的直接 window?我想为每个 collection 项设置一个 collection 或为每个 collection 项设置一个数组,这样更容易从中提取信息。这是我正在谈论的一些示例代码
Sub test()
Dim c As Collection
Dim a As Collection
Set a = New Collection
For i = 1 To 10
Set c = New Collection
c.Add Array("value1", "value2", "value3","valvue4, "value5"), "key1"
c.Add "value2", "key2"
c.Add "value3", "key3"
c.Add "value4, "key4"
c.Add "value5", "key5"
a.Add c, c.Item(1)
'lets say I wanted to print value4 or value1 from the 1st item
Debug.Print a.Item(1(2))
Next i
End Sub
这似乎有效:
Sub ytrewq()
Dim c As Collection
Set c = New Collection
c.Add "x", CStr("x")
c.Add "y", CStr("y")
c.Add "z", CStr("z")
i = 2
MsgBox c.Item(i)
Debug.Print c.Item(i)
End Sub
要添加到@Gary's Student 的回答中,您不能使用整数作为集合的键。因此,您可以使用 Cstr 函数将它们转换为字符串,也可以改用字典。如果您决定使用字典,请确保启用 Microsoft Scripting Runtime(在工具 -> 参考下)。我在下面添加了一些示例。
Sub collExample()
Dim i As Integer
Dim c As Collection
Set c = New Collection
For i = 1 To 10
c.Add 2 * i, CStr(i)
Next i
'keys cant be integers
'see https://msdn.microsoft.com/en-us/library/vstudio/f26wd2e5(v=vs.100).aspx
For i = 1 To 10
c.Item (i)
Next i
End Sub
Sub dictExample()
Dim d As New Dictionary
Dim i As Integer
For i = 1 To 10
d(i) = 2 * i
Next i
Dim k As Variant
For Each k In d
Debug.Print k, d(k)
Next k
Dim coll As New Collection
coll.Add "value1"
coll.Add "value2"
coll.Add "value3"
Set d("list") = coll
Dim newCol As Collection
Set newCol = d("list")
Dim v As Variant
For Each v In newCol
Debug.Print v
Next v
End Sub