0

因此,我试图在工作簿中显示任何用户表单时启动一个事件。他们都会做同样的事情,但我不想为每个UserFormX.Show.

我已经阅读UserForm_Activate()UserForm_Initialize()了解它们类似于以下内容。

Private Sub UserForm_Activate()
    ''Do some stuff
End Sub

我也明白UserForm应该是表单本身的名称。任何激活/显示的用户表单有没有办法让这种情况发生?

谢谢

4

2 回答 2

0

不完全是你所追求的,但它可能是你能得到的最接近的。

添加对的引用Microsoft Forms 2.0 Object Library

在标准模块中创建一个Sub来处理常见操作

Sub FormInitialize(frm As MSForms.UserForm)
    With frm

        ' do stuff

    End With
End Sub

在每个表单模块中创建一个标准Initialize event

Private Sub UserForm_Initialize()
    FormInitialize Me
End Sub

仍然必须Sub为每个表单创建一个,但至少它总是相同的,并且只有一个实际初始化逻辑的副本。

于 2013-01-09T22:28:26.870 回答
0

您可以从每个表单的 Initialize 事件中调用主线代码中的例程吗?

Private Sub UserForm_Initialize()
   Call MainCode_FormHandler(.Me)
End Sub

在主代码中:

Public Sub MainCode_FormHandler(oForm as Form)
   With oForm
      ' Set form's properties here
   End With
End With

如果您需要确定哪个表单已通过,您可以包含测试 oForm.Tag 的逻辑。在表单的“属性”对话框中设置表单的标签。

于 2013-01-09T22:29:59.857 回答