Как мне объявить массив массивов? - PullRequest
0 голосов
/ 05 октября 2010

Я погуглил этот вопрос несколько раз, но не могу найти что-то, что работает.
Я хочу объявить массив массивов (arrArr) неопределенной длины. На самом деле я работаю с Excel: если лист существует, извлеките его массив и сохраните его в массиве массивов. Я объявил этот arrArr следующим образом, и программа в основном работает следующим образом:

dim arrArr as Variant
if sheetIsFound then
    sheetsFound = sheetsFound + 1
    arrArr(sheetsFound) = arrayOfTheSheet
end if

но это не работает: debug говорит, что массив пуст. Что не так в моей (плохой) логике?

Спасибо

1 Ответ

4 голосов
/ 06 октября 2010

Когда вы говорите dim arrArr (), массив не имеет границ.Вы должны повторить его на номер, который вы хотите.если вы хотите сохранить существующие элементы, вам нужно ключевое слово preserve.Вы можете добавить часы и пройтись по коду, чтобы увидеть, что происходит на каждом шаге.

Попробуйте это:

Dim arrArr() As Variant
ReDim arrArr(0) 'make an array with 1 item
If sheetIsFound Then
    sheetsFound = sheetsFound + 1
    ReDim Preserve arrArr(0 To (UBound(a) + 1)) 'add an index to the array
    arrArr(UBound(a)) = arrayOfTheSheet ' add the array to the new index in arrArr
End If

Чтобы получить доступ к массивам, используйте синтаксис arrArr (0), arrArr(1) и т. Д.

На этой странице есть несколько примеров, если вам нужна дополнительная помощь: http://www.brainbell.com/tutors/Visual_Basic/Arrays.htm

...