IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Программирование (http://www.imho.ws/forumdisplay.php?f=40)
-   -   Программирование на VBA (http://www.imho.ws/showthread.php?t=118830)

Стефан 05.05.2007 11:34

Программирование на VBA
 
Здравствуйте! Я недавно начал изучать программирование на VBA (очень нужен именно Excel), и у меня такой вопрос:
Для задания значений свойств класса используется процедура Property Let и Property Get. С обычнымми переменными класса все понятно, а как присвоить значение массиву? Я пишу аргумент Property Let Svoystvo(A()). Все нормально, ошибки компилятор не выдает. Когда я пишу в модуле программы B.Svoistvo = C(), то компилятор пишет, "can't assign to array". Если так нельзя передать массив в класс, то тогда как это сделать? Писать его в аргументе свойства? очень не хочется. Думается, что должен быть способ передать в класс массив по-нормальному.
Простите, если вопрос Вам показался глупым. Не знал, где еще спросить.

shiraza 21.05.2007 18:57

Гм, понял слабо.
Let это Set ?
Какая версия VBA?
Тебе надо передать ссылку на массив?
Напиши кусок кода, авось вместе разберемся.

LightImage 22.05.2007 09:31

В модуле класса 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


EvroStandart 23.05.2007 12:51

LightImage:
это рабочий код?

LightImage 25.05.2007 09:14

Цитата:

Сообщение от EvroStandart (Сообщение 1412549)
LightImage:
это рабочий код?

Рабочий, проверено в Excel 2002
В Access 97 тоже работает

prostoNUT 28.05.2007 21:49

Если вы создаете Variant свойство, допускающее хранение обьекта или любое другое значение , вам надо аккуратно написать Property процедуры для этого объекта. Их должно быть три - Property Get, Let и Set.
http://www.vbrussian.com/Error.asp?ID=4


Часовой пояс GMT +4, время: 15:00.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.