Спасибо за помощь!ReDim многомерные массивы в User Defined Тип EXCEL vba
Мой вопрос следующий. У меня есть раздел кода, который намеревается получить данные из таблицы и сохранить их в пользовательском типе. Поскольку таблица может изменить размер, идея состоит в том, чтобы динамически придавать размер элементам типа. Тип имеет два одномерных массива и один двумерный массив. У меня возникают проблемы с двухмерным массивом. Может ли Excel VBA поддерживать эту функцию?
Private Type testing_thermo_data
'one dimesional arrays
temperature() As Double
pressure() As Double
'two dimensional array
composition() As Double
End Type
sub read_from_sheet_to_type()
Dim data as testing_thermo_data
Dim a,b,i as integer
'a and b are determined with some other function (it works), so to simplify I will set them to a number
a=20
b=10
'Now I will reDim the elements of the UDT to the proper size
'One dimension array with a=10 elements
ReDim data.temperature (a) as double
'One dimension array with a=10 elements
ReDim data.pressure (a) as double
'Two dimensional array. Matriz of a=10 by b=20
ReDim data.composition (1 To a, 1 To b) as double
For i = 0 To (a- 1)
data.temperature(i) = Application.ActiveSheet.Cells(i + 3, 1).Value
data.pressure(i) = Application.ActiveSheet.Cells(i + 3, 2).Value
For j = 0 To (b-1)
'This is the line where my code crashes
data.composition(i, j) = Application.ActiveSheet.Cells(i, j + 3).Value
Next j
Next i
end sub
$ После запуска кода я получаю следующую ошибку, как показано на рисунке. Ошибка выполнения «1004»: приложения или объект определенные ошибки enter image description here
data.composition не имеет предмета (0,0), оно начинается с (1,1). –
Привет, Скотт Кранер, спасибо за ответ. Я попробовал то, что вы упомянули, и все же код делает то же самое. Пока не работает –
То же самое с ячейками() нет ячейки в строке 0, она начинается с 1 –