终止后显示用户窗体的问题
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()
二级表格,除非有未说明的需要
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()
二级表格,除非有未说明的需要