imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 05.05.2007, 11:34     # 1
Стефан
Guest
 
Сообщения: n/a

Программирование на VBA

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

shiraza Путь к славе только начался
Гм, понял слабо.
Let это Set ?
Какая версия VBA?
Тебе надо передать ссылку на массив?
Напиши кусок кода, авось вместе разберемся.
shiraza вне форума  
Старый 22.05.2007, 09:31     # 3
LightImage
Junior Member
 
Регистрация: 16.10.2002
Адрес: Россия-матушка
Пол: Male
Сообщения: 96

LightImage Нимб уже пробиваетсяLightImage Нимб уже пробивается
В модуле класса 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 байта
LightImage вне форума  
Старый 23.05.2007, 12:51     # 4
EvroStandart
Full Member
 
Аватар для EvroStandart
 
Регистрация: 20.01.2004
Адрес: Таллинн
Пол: Male
Сообщения: 623

EvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собой
LightImage:
это рабочий код?
EvroStandart вне форума  
Старый 25.05.2007, 09:14     # 5
LightImage
Junior Member
 
Регистрация: 16.10.2002
Адрес: Россия-матушка
Пол: Male
Сообщения: 96

LightImage Нимб уже пробиваетсяLightImage Нимб уже пробивается
Цитата:
Сообщение от EvroStandart Посмотреть сообщение
LightImage:
это рабочий код?
Рабочий, проверено в Excel 2002
В Access 97 тоже работает
__________________
1 миллибайт = 1/1024 байта

Последний раз редактировалось LightImage; 25.05.2007 в 09:46. Причина: дополнение
LightImage вне форума  
Старый 28.05.2007, 21:49     # 6
prostoNUT
Guest
 
Сообщения: n/a

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

Опции темы

Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


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




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