在VBA中将数组转换为集合的简便方法

Ped*_* T. 9 arrays collections vba

是否有一种简单的方法可以在VBA中使用Array中的所有值填充Collection?例如

Dim c As New Collection
Dim a(10) As Variant
...
c.AddAll a
Run Code Online (Sandbox Code Playgroud)

一个简单的解决方案是迭代数组的原因,但我希望现代语言提供开箱即用的这种方法......

Dim c As New Collection
Dim a(10) as Variant
...
For Each item in a
  c.Add item
Next item
Run Code Online (Sandbox Code Playgroud)

谢谢你的任何提示!

Jon*_*ton 10

"现代语言"是你的问题所在--VBA/VB6并不是真正的现代 - 多年来都没有进步太多.

如果你需要做很多事情,写一个函数来做循环:

Sub AddAll(ByVal c as Collection, a as Variant)
    For Each item in a
      c.Add item
    Next item
End Sub
Run Code Online (Sandbox Code Playgroud)

或者如果您每次都想要一个新的集合:

Function ToCollection(a as Variant) As Collection
    Dim c As New Collection
    For Each item in a
      c.Add item
    Next item
    Set ToCollection = c
End Function
Run Code Online (Sandbox Code Playgroud)

然后使用它:

Dim c As New Collection
Dim a(10) as Variant
...
AddAll c,a
Run Code Online (Sandbox Code Playgroud)

要么

Dim a(10) as Variant
Dim c as Collection
...
Set c = ToCollection(a)
Run Code Online (Sandbox Code Playgroud)

  • 非常感谢您的快速帮助!我通常不喜欢 VBA 可能是有原因的;-) (2认同)