Простой способ преобразования массива в коллекцию в VBA

есть ли простой способ заполнить коллекцию всеми значениями из массива в VBA? например, что-то вроде

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 ответов


"современный язык" - вот где ваша проблема - 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)