| imho.ws |
![]() |
|
|
|
# 1 |
|
Guest
Сообщения: n/a
|
Программирование на VBA
Здравствуйте! Я недавно начал изучать программирование на VBA (очень нужен именно Excel), и у меня такой вопрос:
Для задания значений свойств класса используется процедура Property Let и Property Get. С обычнымми переменными класса все понятно, а как присвоить значение массиву? Я пишу аргумент Property Let Svoystvo(A()). Все нормально, ошибки компилятор не выдает. Когда я пишу в модуле программы B.Svoistvo = C(), то компилятор пишет, "can't assign to array". Если так нельзя передать массив в класс, то тогда как это сделать? Писать его в аргументе свойства? очень не хочется. Думается, что должен быть способ передать в класс массив по-нормальному. Простите, если вопрос Вам показался глупым. Не знал, где еще спросить. |
|
|
# 3 |
|
Junior Member
Регистрация: 16.10.2002
Адрес: Россия-матушка
Пол: Male
Сообщения: 96
![]() ![]() |
В модуле класса Class1:
Код:
Option Explicit
Dim myvalue
Property Let Svoystvo(A)
myvalue = A
End Property
Property Get Svoystvo()
Svoystvo = myvalue
End Property
Код:
Sub test()
Dim C As Class1
Dim v(1 To 4) As Integer, i As Integer, s As String
Set C = New Class1
v(1) = 4
v(2) = 3
v(3) = 2
v(4) = 1
C.Svoystvo = v
s = s & "TypeName(C.Svoystvo) == " & TypeName(C.Svoystvo)
For i = 1 To 4
s = s & vbCrLf & "C.Svoystvo(" & i & ") == " & C.Svoystvo(i)
Next i
MsgBox s
End Sub
__________________
1 миллибайт = 1/1024 байта |
|
|
|
|
# 6 |
|
Guest
Сообщения: n/a
|
Если вы создаете Variant свойство, допускающее хранение обьекта или любое другое значение , вам надо аккуратно написать Property процедуры для этого объекта. Их должно быть три - Property Get, Let и Set.
http://www.vbrussian.com/Error.asp?ID=4 |