【问题标题】:Excel Userform not initialising after first loadExcel Userform 首次加载后未初始化
【发布时间】:2015-10-12 18:13:00
【问题描述】:

我有一个包含多层用户表单的工作簿。

当工作簿打开时,用户会看到一个用户表单,该用户表单有两个命令按钮,一个是选择带有数据透视表和切片器的工作表,第二个是打开另一个包含八个命令按钮的用户表单,其中七个调用更多单独的用户表单和八个是关闭按钮。

我遇到的问题是,当我选择打开新用户窗体的命令按钮,然后关闭第二个用户窗体,然后重新选择命令按钮以重新打开第二个用户窗体时,会出现第二个用户窗体,但所有命令按钮都不起作用关闭窗口 (X)。

第一个命令按钮后面的代码如下:

Private Sub cmd_manageAbsence_Click()
    splashScreen.Hide
    Load managementFunctions
    managementFunctions.Show
End Sub

第二个用户窗体的关闭和终止代码如下:

Private Sub cmd_close_Click()
    Unload managementFunctions
End Sub

Private Sub UserForm_Terminate()
    Sheets("Front").Activate
    splashScreen.Show
End Sub

我在用户表单的第二层遇到了同样的问题,但我想如果我对第一层进行排序,我可以将修复应用到其余层。

谢谢

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    你应该试试

    Unload Me
    

    而不是

    Unload managementFunctions
    

    另外,您可能想看看Form.ShowForm.ShowDialog 之间的区别(https://msdn.microsoft.com/en-us/library/aa984358%28v=vs.71%29.aspx ...我意识到这是一个旧页面,但信息仍然有效!)


    此外,您还可以从创建表单对象中受益,如下所示:

    Dim frm as managementFunctions
    set frm = new managementFunctions
    frm.Show
    

    然后你就可以使用了

    Me.Hide
    

    而不是Unload Me

    【讨论】:

    • 此外,OP 可以以编程方式调用Initialize 事件,即Call MyUserForm.UserForm_Initialize()。通常UF只被initlialized一次,在它被初始化之后,直到你重新显示它时它被卸载,它会引发Activate事件。对于大多数普通用例,Activate 事件可能比 Initialize 更可取——如果 OP 每次显示时都需要重新填充表单的控件,请使用 Activate 事件,因为它每次都会引发显示形式。
    • 已排序,@3-14159265358979323846264。无法使用 showdialog 但Dim frm As New managementFunction 方法是关键。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-26
    • 2018-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多