VBA-如何动态访问用户窗体

时间:2018-10-30 05:30:32

标签: excel vba excel-vba

您知道访问用户名的方法是将哪个名称存储在变量中吗? 我有带有复选框事件的类模块,但是复选框位于不同的用户窗体上,我需要使用它们或它们的用户窗体进行操作。

Class模块具有其公共变量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 :(得分:0)

您可以对每个用户表单使用ActiveForm as object之类的公共变量

Private Sub UserForm_Activate()

    Set ActiveForm = Me

End Sub

然后在类模块中 ActiveForm.Controls("...
获取表单名称chParent = ActiveForm.Name