【问题标题】:Calling UserForm_Initialize() in a Module在模块中调用 UserForm_Initialize()
【发布时间】:2012-12-07 12:53:06
【问题描述】:

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

【问题讨论】:

    标签: excel vba module userform


    【解决方案1】:

    来自一个模块:

    UserFormName.UserForm_Initialize
    

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

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

    或者,如果用户窗体尚未加载:

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

    【讨论】:

    • 嗨,我应该把 UserFormName.UserForm_Initialize 放在哪里?
    • 随心所欲...在工作簿中的子或函数中的任何 vba。
    • 感谢丹尼尔的方法。我可以让我让它自己初始化吗?例如,我有很多用户表单,我不想对它们中的每一个都进行编码。
    • 你可以使用for each uf in UserForms循环吗?
    • 在函数中,我尝试将 UserFormName 声明为 UserForm/String,然后在参数中调用表单的名称,但仍然没有运气:(
    【解决方案2】:

    恕我直言,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
    

    【讨论】:

    • 嗨丹尼尔,好主意。我想要的是例如在 Module 中为 UserForm_Initialize 创建一个函数(我不会指定要初始化哪个 UserForm)。关于初始化哪个 UserForm,我稍后会将它包含在 UserForm 中。我这样做的原因是因为我想在模块的 IF ELSE 语句中包含 init
    • 我不明白你写的评论的意思,对不起。一般来说,你应该避免直接调用 UserForm_Initilize(),因为它会被 UserForm1 类本身调用,作为对创建 UserForm1 的反应。它只是一个事件处理程序,因此它应该处理事件。
    • 1.我在 Module1 中有 IF ELSE 语句 2. 在 END IF 之前,我想重置 UserForm1 3. 我想要里面的“重置”功能Module1 PS 抱歉我的解释不好
    • 没关系 Tan,我的英语也很糟糕 :-)。你不能只发布你的代码示例吗?
    • 我已经解决了我的问题,并在上​​面我自己的问题中发布了解决方案。你觉得好看吗?
    【解决方案3】:

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

    在模块中: UserForms(Name).Userform_Initialize

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-24
      • 2023-04-08
      • 1970-01-01
      • 2017-02-16
      • 2018-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多