2010-10-05 4 views
0

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

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

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

Благодаря

+0

Я думаю, что это ваш объект Varient, который является проблемой. Вы думали об использовании списков, а не массивов? И есть список списков? Или существует конкретная причина для использования массива массивов? – jimplode

+0

Да, вариант - определенно проблема, но это работает: Dim vaTest As Variant; vaTest = Array (Array1, array2). И я использую массив массивов, потому что кажется, что это удобный способ сравнить значения массива с каждым массивом arrArr, поскольку я не могу создавать переменные, как в PHP: $ {"array". $ numberOfTheArray} = $ thisArray – Coronier

+1

Вы должны Dim/Redim Variant как массив перед назначением элементу внутри него. Вариант с радостью примет назначение в качестве массива, но, как написано выше, массив не будет иметь размеров (без элементов). – Bob77

ответ

4

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

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

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

+0

Спасибо, вот что я искал. И очень интуитивно понятный учебник. – Coronier

Смежные вопросы