2015-03-04 4 views
2

Быстрый вопрос о зубчатых массивах. У меня есть статический массив контейнера, который не будет меняться в размерах:Redim Jagged Arrays VBA

Dim StaticArray(1 to 3, 1 to 4, 1 to 12) as variant 

Я назначая массив значений для каждого индекса в статическом массиве следующим образом:

Dim ArrayInput() as Variant 
ArrayInput = Array(1,2,3,4,5) 
StaticArray(1,1,1) = ArrayInput 

После назначения массив значений в StaticArray , Я хочу, чтобы гибкость добавила еще одно значение в переменную ArrayInput.

Есть ли способ переустановить вариант, содержащийся в StaticArray (1,1,1)? Что-то вроде:

Redim Preserve StaticArray(1 to 3, 1 to 4, 1 to 12)(1 to ubound(?)+1) 

Или является единственной возможностью изменить переменную ArrayInput и перечитать?

Спасибо!

+0

Иисуса Навина здесь: http://stackoverflow.com/questions/19633937/can-you-declare-jagged-arrays-in-excel-vba-directly –

ответ

1

Мне было интересно то же самое!

Как вы можете упомянуть, я могу добиться этого только путем создания временного массива, перераспределения и последующего переназначения в исходный зубчатый массив. Вот мой код: ответ

Dim StaticArray(1 To 3, 1 To 4, 1 To 12) As Variant 
Dim ArrayInput() As Variant 
Dim TempArray() As Variant 

ArrayInput = Array(1, 2, 3, 4, 5) 
StaticArray(1, 1, 1) = ArrayInput 

'Instead of redim, store array temporarily 
TempArray = StaticArray(1, 1, 1) 

'Redim the temporary 
ReDim Preserve TempArray(UBound(TempArray) + 1) 

'Asign value 
TempArray(UBound(TempArray)) = 6 

'Then store again on statick array 
StaticArray(1, 1, 1) = TempArray