Я использую vba с Excel 2007 и пишу код для модуля класса.
1) Возможно ли следующий код?...
По сути, у меня есть две перечисления, назовите их eDATASET
и eDATATSUBSET
. Особое значение из eDATASET
должно инициировать назначение из необязательно прошедшего параметра в свойстве Let
. Что-то вроде этого:
Public Property Let foo(Optional ByVal lngSubSet as eDATASUBSET, _
ByVal lngSuperSet as eDATASET)
Select Case lngSuperSet
Case eDATASET.abc, eDATASET.def
mlngBar = lngSuperSet
Case eDATASET.xyz
'// if lngSubSet not passed, trigger error code...
mlngBar = lngSubSet
End Select
End Property
2) Как мне передать необязательный параметр для свойства записи при вызове объекта...
Помимо по-видимому обратного размещения параметров Optional
(по сравнению с необязательными параметрами в функциях и подсистемах), у меня возникли проблемы с поиском документации по этой функции. Справка vba говорит следующее:
Дополнительно. Указывает, что аргумент не требуется. Если используется, все последующие аргументы в arglist также должны быть необязательными и объявляться с использованием ключевого слова Optional. Обратите внимание, что правая сторона свойства не допускается. Позвольте выражению быть необязательным.
и следующее из vbusers.com. Ничего не объясняют в способе использования. Итак, как мне передать необязательный параметр при вызове объекта из модуля кода... oObj.foo = ???
3) Есть ли лучший способ сделать это?...
У меня есть основное понимание oop (по крайней мере, в том, как оно реализовано в vba). Есть ли лучший способ условно принять параметр в объект?