【发布时间】:2012-12-07 12:53:06
【问题描述】:
如何在 Module 中调用 UserForm_Initialize() 而不是 UserForm 代码对象?
【问题讨论】:
如何在 Module 中调用 UserForm_Initialize() 而不是 UserForm 代码对象?
【问题讨论】:
来自一个模块:
UserFormName.UserForm_Initialize
只需确保在您的用户表单中,您像这样更新子:
Public Sub UserForm_Initialize() 所以可以从表单外部调用它。
或者,如果用户窗体尚未加载:
UserFormName.Show 最终会调用 UserForm_Initialize,因为它会加载表单。
【讨论】:
for each uf in UserForms循环吗?
恕我直言,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
【讨论】:
解决方案 经过这么长时间,我设法解决了这个问题。
在模块中: UserForms(Name).Userform_Initialize
此方法最适合动态初始化当前用户窗体
【讨论】: