Вы страдаете от общей путаницы новичков ie с Variants в VBA.
Вариантная переменная в VBA может содержать массив. Это не то же самое, что массив вариантов.
Рассмотрим приведенный ниже код
Public Sub TestArrayWithVariants()
Dim myArray As Variant
Dim myVariantArray(0 To 2) As Variant
myArray = Split("Its,a,variant,containing, an,array", ",")
' The next line produces a Can't assign to array error
myVariantArray = Split("Its,a,variant,containing, an,array", ",")
End Sub
Возникла путаница, поскольку для одномерных массивов нет явного различия в синтаксисе варианта, содержащего массив и массив вариантов.
например,
myArray(0)
myVariantArray(0)
Однако, если мы скажем
myArray(3)=Split("Its,a,variant,containing,an,array", ",")
, то для печати 'варианта' в позиции 2 второго массива будет be
debug.Print myArray(3)(2)
Это отличается от того, если мы объявим myVariantArray как многомерный массив
Dim myVariantArray(0 to 3,0 to 4)
myVariantArray(3,0)="Its"
myVariantArray(3,1)="an"
myVariantArray(3,2)"Array"
myVariantArray(3,3)"Containing"
myVariantArray(3,4)"Variants"
Для варианта, содержащего массив, лучше всего думать о первом измерении, возвращающем анонимный массив и когда мы индексируем в этот анонимный массив, мы получаем любой элемент, расположенный в индексе.
myArray(2)(4)
становится
anonymous_array(4)
и т. д.
Если вы планируете структура данных, основанная на вложенных вариантах, я настоятельно рекомендую вместо этого использовать вложенные коллекции.