1) Да Ваш код возможен.
2) Вот как вы передаете аргумент:
Предположим, myObject
является объектом вашего класса:
myObject.foo(lngSubSet) = lngSuperSet
Размещение аргументов в arglist действительно выглядит странно, но это VBA для вас. Скажем, у вас есть 4 аргумента, два из которых являются необязательными, плюс ваша правая часть. Вы бы разместили их так:
Public Property Let foo(arg1, arg2, Optional arg3, Optional arg4, _
RHS)
и используйте их вот так (при условии, что вы отказываетесь от arg4
):
myObject.foo(arg1,arg2,arg3) = RHS
3) Есть ли лучший способ сделать это? Всегда есть, в зависимости от того, кого вы спрашиваете. Вы можете иметь свой аргумент lngSubSet
как отдельное свойство. Вот как я склонен это делать. Но в вашем случае ваш образ действий может хорошо сработать для вас. Я не знаю, это во многом вопрос вкуса и зависит от вашего конкретного применения.