Estoy usando vba con Excel 2007 y estoy escribiendo código para un módulo de clase.¿Cómo funcionan los parámetros opcionales en Let/Get Properties?
1) ¿Está el siguiente código posible? ...
Básicamente tengo dos enumeraciones, llamarlos eDATASET
y eDATATSUBSET
. Un valor particular de eDATASET
debe desencadenar una asignación del parámetro opcionalmente pasado en una propiedad Let
. Algo como esto:
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) ¿Cómo puedo incluso pasar un parámetro opcional para una propiedad se puede escribir cuando se llama al objeto ...
Aparte de lo aparentemente imposible la colocación de los parámetros Optional
(en comparación con la opción parámetros en funciones y subs), tengo problemas para encontrar documentación sobre esta función. La ayuda de vba dice esto:
Opcional. Indica que un argumento no es obligatorio. Si se utiliza, todos los argumentos posteriores en arglist también deben ser opcionales y declararse utilizando la palabra clave Optional. Tenga en cuenta que no es posible que el lado derecho de una expresión de Property Let sea Opcional.
y lo siguiente desde vbusers.com. Tampoco explican mucho en la forma de uso. Así que ¿Cómo puedo pasar el parámetro opcional cuando se llama al objeto a partir de un módulo de código ... oObj.foo = ???
3) ¿Hay una mejor manera de hacer esto? ...
que tienen un conocimiento básico de programación orientada a objetos (al menos en cómo se implementa en vba). ¿Hay una forma mejor de aceptar condicionalmente un parámetro en un objeto?
posible duplicado de [Let property of VBA class modules - ¿es posible tener múltiples argumentos?] (Http: // stackoverflow.com/questions/13823367/let-property-of-vba-class-modules-is-it-possible-to-have-multiple-arguments) –