终止后显示用户窗体的问题

Problem with showing a UserForm after termination

1、我想做的事情:

我有一个主用户窗体,在那个窗体上我有一个按钮来显示辅助用户窗体。当我单击该按钮时,我希望隐藏主窗体。当我完成辅助表单的工作后,我想关闭它并再次显示主表单。

2、我目前所拥有的(相关代码):

主窗体代码:

Private Sub createFastButton_Click()
    Me.Hide
    formSec.Show
End Sub

二级表格代码:

Private Sub cancelButton_Click()
    Me.Hide
    formMain.Show
End Sub
Private Sub UserForm_Terminate()
    formMain.Show
End Sub

3、问题:

如果我使用 ControlButtons 在表单之间导航,一切都会按预期工作。但是,如果我在辅助窗体上使用 "X" 关闭 window 按钮并尝试从主窗体再次打开它,它将失去所有功能(主窗体工作正常)。当我在 VBA 编辑器中使用 "View Object" 时,它只是显示了我所看到的次要形式。 None 个按钮有效,none 个预期的框和标签已填充。即使 "X" 按钮也不起作用。对我来说,很明显,问题出在次要形式的卸载上。我试图用 Unload Me 替换二级形式的 Me.Hide 并且发生了完全相同的事情,就好像我按下 "X" 按钮一样。所以我需要用 Sub UserForm_Terminate() 做点什么,我试着在那里添加 Me.Hide,正如预期的那样,它什么也没做。

我的问题有解决方案吗?

提前致谢。

单击 "X" 会引发您需要处理的 QueryClose 事件,例如:

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode = VbQueryClose.vbFormControlMenu Then
        Cancel = True
        Me.Hide
        ' Add more code here to respond to form close event
    End If
End Sub

请参阅 here 以获得非常有用的解释。

主例程,调用主窗体:

With New formMain
    .Show
End With

主窗体,调用副窗体

Private Sub createFastButton_Click()
    Me.Hide
    With New formSec
        .Show
    End With
    Me.Show
End Sub

中学

Private Sub cancelButton_Click()
    Me.Hide
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
   If CloseMode = VbQueryClose.vbFormControlMenu Then Cancel = True
End Sub

不需要 UserForm_Terminate() 二级表格,除非有未说明的需要