Excel 在模块中调用UserForm_Initialize()
如何在Excel 在模块中调用UserForm_Initialize(),excel,vba,module,userform,Excel,Vba,Module,Userform,如何在模块中调用UserForm\u Initialize() UserFormName.UserForm_Initialize 只需确保在userform中更新sub,如下所示: Public Sub-UserForm\u Initialize()因此可以从表单外部调用它 或者,如果尚未加载Userform: UserFormName.Show将调用UserForm\u Initialize,因为它加载了表单。imo方法UserForm\u Initialize应该保持私有因为它是初始化Us
模块中调用UserForm\u Initialize()
UserFormName.UserForm_Initialize
只需确保在userform中更新sub,如下所示:
Public Sub-UserForm\u Initialize()
因此可以从表单外部调用它
或者,如果尚未加载Userform:
UserFormName.Show
将调用UserForm\u Initialize
,因为它加载了表单。imo方法UserForm\u Initialize应该保持私有因为它是初始化UserForm事件的事件处理程序
此事件处理程序在创建UserForm的新实例时调用。在这种情况下,偶数处理程序u可以初始化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
用户表单代码:
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\u初始化
此方法最适合动态初始化当前UserFormHi,因此我应该将UserFormName.UserForm\u放在哪里初始化?无论您喜欢在哪里。。。子函数或函数中工作簿中的任何vba。感谢提供此方法。我能让它自己初始化吗?e、 g我得到了很多UserForm,我不想对它们进行编码。你可以在UserForms
循环中为每个uf使用?在函数中,我尝试将UserFormName声明为UserForm/String,然后在参数中调用表单的名称,但仍然没有成功:(嗨,Daniel,想法不错。我想要的是在模块中为UserForm_Initialize创建一个函数(我还没有指定初始化哪个UserForm)。关于初始化哪个UserForm,我稍后会将其包含在UserForm中。我这样做的原因是因为我想在模块的IF-ELSE语句中包含init。我不理解你写的注释的含义,抱歉。通常你应该避免调用UserForm_Initilize()直接,因为类UserForm1本身会调用它,作为对UserForm1创建的反应。它是一个事件处理程序,因此它应该处理事件。1.我在模块12中有IF ELSE语句。在结束IF之前,我想重置UserForm1 3。我想在模块1中使用“reset”函数。P.很抱歉,我的解释不好Tan,我的e英语也不好:-)。你不能发布你的代码样本吗?我已经解决了我的问题,并在上面我自己的问题中发布了解决方案。你认为它好吗?