6

如何调用UserForm_Initialize()aModule而不是 UserForm 代码对象?

4

3 回答 3

12

从一个模块:

UserFormName.UserForm_Initialize

只要确保在您的用户表单中,您像这样更新子:

Public Sub UserForm_Initialize()因此可以从表单外部调用它。

或者,如果尚未加载用户表单:

UserFormName.Show最终会调用UserForm_Initialize,因为它会加载表单。

于 2012-12-20T03:29:06.777 回答
3

恕我直言,UserForm_Initialize 方法应该保持私有,因为它是UserForm的 Initialize 事件的事件处理程序。

当创建用户窗体的新实例时调用此事件处理程序。在这个偶数处理程序中,您可以初始化 UserForm1 类的私有成员。

例子:

标准模块代码:

Option Explicit

Public Sub Main()
  Dim myUserForm As UserForm1

  Set myUserForm = New UserForm1
  myUserForm.Show

End Sub

用户表单代码:

Option Explicit

Private m_initializationDate As Date

Private Sub UserForm_Initialize()
  m_initializationDate = VBA.DateTime.Date
  MsgBox "Hi from UserForm_Initialize event handler.", vbInformation
End Sub
于 2012-12-20T06:06:25.140 回答
1

解决方案 经过这么长时间,我设法解决了这个问题。

在模块中:UserForms(Name).Userform_Initialize

此方法最适合动态初始化当前用户窗体

于 2012-12-21T07:41:15.990 回答