VBA - как получить динамический доступ к пользовательской форме - PullRequest
0 голосов
/ 30 октября 2018

знаете ли вы метод доступа к пользовательской форме, имя которого хранится в переменной? У меня есть модуль класса с событиями для флажков, но флажки расположены на разных пользовательских формах, и мне нужно работать с ними или с их пользовательскими формами.

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

chParent = "formCmnStructs"

Тогда внутри модуля класса у меня есть это (и больше операций, где требуется условие):

If chbParent = "formInsertRow" Then
  Divisions(r, c).Checked = IIf(formInsertRow.Controls("chbDiv_" & Me.chbId).value = True, 1, 0)
  formInsertRow.chbDivClicked
ElseIf chbParent = "formCmnStructs" Then
  Divisions(r, c).Checked = IIf(formCmnStructs.Controls("chbDiv_" & Me.chbId).value = True, 1, 0)
  formCmnStructs.chbDivClicked
End If

Теперь он используется только для двух форм, но больше не за горами. Есть ли способ отменить условие и получить доступ к пользовательской форме динамически, как это:

userforms(chbParent).Controls("....

1 Ответ

0 голосов
/ 30 октября 2018

Вы можете использовать открытую переменную, такую ​​как ActiveForm as object и для каждой пользовательской формы

Private Sub UserForm_Activate()

    Set ActiveForm = Me

End Sub

А потом в классе модуль ActiveForm.Controls("...
Для получения имени формы chParent = ActiveForm.Name

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...