Ссылка на свойство Set из свойства Get - PullRequest
0 голосов
/ 29 мая 2011

Я наткнулся на этот бит кода VBA, опубликованный в другом вопросе SO. Есть ли смысл ссылаться на свойство Set в свойстве Get класса?

Private WithEvents mctlEventButton As MSForms.CommandButton

Public Property Set EventButton(ctlButton As MSForms.CommandButton)
Set mctlEventButton = ctlButton
End Property

Зачем это? ...

Public Property Get EventButton() As MSForms.CommandButton
Set EventButton = mctlEventButton
End Property

Код показывал, как использовать collections для перебора группы элементов управления. Вопрос не был действительно об этой части кода, поэтому он не был рассмотрен в вопросе. Используя пример из вопроса, я столкнулся с проблемой с битом, который я разместил здесь, потому что свойство Get использовало свойство Set. Так когда это будет полезно?

Вот ссылка на SO Вопрос: массив объектов или коллекция в VBA Excel

1 Ответ

1 голос
/ 29 мая 2011
Public Property Get EventButton() As MSForms.CommandButton
   Set EventButton = mctlEventButton
End Property

В приведенном выше коде Set EventButton = mctlEventButton не будет вызывать следующее (попробуйте пройти по коду, и вы увидите, что он не входит в Set)

Public Property Set EventButton(ctlButton As MSForms.CommandButton)
   Set mctlEventButton = ctlButton
End Property

С другой стороны, это как выражение, которое используется для возврата значения.
По сути, думайте о Get как

Public function EventButton() As MSForms.CommandButton
   Set EventButton = mctlEventButton  'returning the value from the function
End Property

, обернутый в форму свойства для разработчиков, чтобы получить / установить.

...