2012-01-03 8 views
0

Как читать диапазон Excel в массив объектов?VBA: чтение диапазона Excel в массив объектов

Чтобы уточнить, для этого диапазона Excel 6 ячеек ...

John Roberts 56 
Sam  Alito  52 

и этот класс ...

Class supremes  
Public firstName   
Public lastName  
Public age 
Dim supreme As New supremes 

Я хотел бы прочитать диапазон Excel в массив supreme, что:

arr(1).firstName = "John" 
arr(2).age = 52 

Для стандартного массива, это делается с одной уступки ...

arr = range("supremes") 

Есть ли аналогичная команда для заполнения массива объектов?

+0

http://support.microsoft.com/kb/213798 –

+0

Я знаю, как назначить диапазон массиву. Мой вопрос заключался в том, как назначить массив объектов, как определено модулем класса. – rjsoft

+2

Тогда это может помочь тем, кто пытается ответить на ваш вопрос, если вы объясните, что именно вы пытаетесь выполнить. Если вы просто хотите присвоить массив другому массиву в VBA, ваш вопрос не имеет ничего общего с Excel. Возможно, вы можете опубликовать код прототипа? –

ответ

4

Не существует специального способа чтения данных в объект массива. Вам просто нужно перевернуть свой собственный код.

dim i as long 
dim rData as range 
dim vData as variant 

set rData=selection 

vData=rData 

for i=1 to ubound(vdata) 
    arr(i).FirstName=vdata(i,1) 
    arr(i).LastName=vdata(i,2) 
    arr(i).Age=vdata(i,3) 
next i 
+0

Я боялся этого. Для большого диапазона этот цикл может быть проблемой производительности. Благодарю. – rjsoft

+1

Просто убедитесь, что вы минимизируете, как часто вы разговариваете с VBA в Excel, что поможет производительности, а не делает его идеальным, но поможет. Кроме того, я нашел, что с помощью byref ускоряются все, и вот некоторые другие советы, которые могут помочь держать вещи относительно быстро: http://www.shamrock-software.eu/vb.htm также, я думаю, Словарь быстрее, чем Collection, вы вам придется дважды проверить это, но это может помочь сохранить все быстро. Я уверен, что вы уже знаете некоторые из них, но что-то может быть для вас новым. – Jon49

+0

@rjsoft Вариант массива варианта Jon49 будет очень быстрым - намного быстрее, чем стандартный цикл цикла (+1) – brettdj