【问题标题】:VBA - how to dynamically access userformVBA - 如何动态访问用户表单
【发布时间】:2018-10-30 05:30:31
【问题描述】:

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

类模块有它的公共变量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("....

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    您可以为每个用户表单使用像 ActiveForm as object 这样的公共变量

    Private Sub UserForm_Activate()
    
        Set ActiveForm = Me
    
    End Sub
    

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

    【讨论】:

      猜你喜欢
      • 2017-08-16
      • 2017-09-04
      • 2015-06-09
      • 2013-03-26
      • 1970-01-01
      • 2017-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多