Простой способ преобразования массива в коллекцию в 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)