|
|
|
новичок
      
участник
Last Login: 07.05.2007 12:40
Сообщ.: 2,
Visits: 8
|
|
| Если свойство класса представлено одним числом, то просто делается присваивание, обрабатываемое процедурой Property Let (или Set). А если свойством класса является массив значений, то как его передать в класс? При том, что VBA 6 допускает присваивать динамическому массиву другой массив, запись в виде A.Array1=Array2 выдает ошибку Can't assign to an array. Неужели придется передавать массив в виде аргумента функции? Так не хочется. Верю, что должен быть человеческий способ присваивания массива свойству класса. Помогите, кто что знает.
|
|
|
|
|
Supreme Being
      
участник
Last Login: 26.10.2007 9:10
Сообщ.: 166,
Visits: 1 538
|
|
Можно создать свой собственный тип, в описании которого будет указан массив нужной размерности и работать с переменными этого типа (в том числе и передавать их). Примерно такType MyType M(1 To 10) As Integer End Type Public Sub Test() Dim A As MyType, B As MyType, i As Integer For i = 1 To 10 'инициализация массивов A.M(i) = i B.M(i) = 0 Next i MsgBox B.M(3) B = A 'присвоение одному массиву значений другого MsgBox B.M(3) End Sub
|
|
|
|
|
новичок
      
участник
Last Login: 07.05.2007 12:40
Сообщ.: 2,
Visits: 8
|
|
| Это и так понятно. Проблема только в том, что в классе нельзя создавать свои типы. Все равно спасибо. Я буду иметь в виду такую возможность. Кстати, я разобрался со своей проблемой. Массив можно передавать в класс, только для этого его нужно присвоить переменной, которая в этом случае будет хранить ссылку на массив, и эту переменную можно присваивать свойству класса. А уже в классе можно написать инициализацию массива на основе этой переменной, только для этого надо писать цикл — обычное присваивание не поможет. Этот способ позволяет передавать массив в процедуру, функцию и получать из функции.
|
|
|
|