VBA Excel - 打开一个用户窗体时关闭另一个用户窗体

VBA Excel - Closing one user form when opening the other

提问人:Renaat 提问时间:10/14/2023 更新时间:10/14/2023 访问量:67

问:

我的 excel VBA 项目中有两个用户窗体。在形式 1 中,我有一个函数,其中我收集了 3 个公共变量,然后我打开第二个形式并传递变量。到目前为止,一切正常。但是,我也希望第一个表格在第二个表格打开时关闭。这是行不通的。我尝试了不同的设置,包括两种形式的模式和无模式打开,并将 Unload 语句放在第二种形式的 Initialize 中以及第一种形式的 sub 末尾。这些都不起作用。这就是我现在所拥有的

在我的第一个表格(FormStart)中,我有这个

Private Sub Btn_RondeHeropenen_Fx_Click()

    
    'Here I collect my variables to populate the ScanTool form
    
    VerwerkenRetour = True  'this is a public variable that I want to use to determine where I came from when opening ScanTool
    
    ScanTool.Show
   
    
End Sub

在ScanTool表格中,我有这个

Private Sub UserForm_Initialize()
    
    If VerwerkenRetour = True Then
    
        'I first write my variables into the form (works fine)
        
        Btn_Start_Fx_Click   'and then I run a function (works fine as well)

        Unload (FormStart)
        
    End If
    
End Sub

上面的代码执行所有查找,但不关闭 FormStart。在此代码版本中,我收到错误:

“运行时错误 361:无法卸载对象或将其从内存中删除”

我已经将 Unload 语句移到了 FormStart 中子的末尾,紧挨着 Show.ScanTool 指令的下方,但在那里它可能被忽略,因为它不再是活动形式。

关于我做错了什么,有什么建议吗?

一如既往,提前感谢您的帮助。

Excel VBA 表单 卸载

评论

1赞 CDP1802 10/14/2023
Unload FormStart否 ()。
0赞 Storax 10/15/2023
在这种情况下,不应使用用户窗体的默认实例。您应该使用标记或属性来传递信息

答:

0赞 Red Hare 10/14/2023 #1

只是为了展示它是如何工作的,原理 两个用户窗体,一个带按钮

UserForm1 代码:

Option Explicit

Private Sub CommandButton1_Click()
Me.Hide ' hides the UF
UserForm2.Show vbModal ' loads and show the other UF
Unload Me ' When UserForm1 is closed it returns here and we close it
End Sub

评论

0赞 Renaat 10/15/2023
感谢 Red Hare,虽然在 Form 2 打开时它没有关闭 Form 1,但它确实达到了目标。用户无法以“不受控制”的方式返回 Form 1。