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

时间:2012-09-04 07:32:47

标签: arrays vba collections

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

之类的东西
Dim c As New Collection
Dim a(10) As Variant
...
c.AddAll a

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

Dim c As New Collection
Dim a(10) as Variant
...
For Each item in a
  c.Add item
Next item

感谢任何提示!

1 个答案:

答案 0 :(得分:10)

“现代语言”是你的问题所在--VBA / VB6并不是真正的现代 - 多年来都没有提升过多。

如果您需要做很多事情,请编写一个函数来进行循环:

Sub AddAll(ByVal c as Collection, a as Variant)
    For Each item in a
      c.Add item
    Next item
End Sub

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

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

然后使用它:

Dim c As New Collection
Dim a(10) as Variant
...
AddAll c,a

Dim a(10) as Variant
Dim c as Collection
...
Set c = ToCollection(a)
相关问题