VBA程序。窗体A中的一个命令按钮点击事件Sub内,开头有若干语句,然后窗体A隐藏,之后调用窗体B,后面有若干语句,最后结束 sub。
窗体B中,退出按钮点击事sub 内,第一句是窗体B卸载,第二句是显示窗体A,最后结束sub。
目标:在窗体B中输入数据,返回到窗体A中继续执行窗体A内后面若干语句。
网上有的说:窗体B用无模式显示,窗体A内后面若干语句会直接执行,不会等待窗体B返回。窗体B用有模式显示,窗体A内后面若干语句不会直接执行,会等待窗体B返回后再执行。
网上说法验证情况:前面一句是正确的,后面一句不正确。窗体B用有模式显示,即使从窗体B返回窗体A后,窗体A后的语句不会正常执行,但点击右上角的Ⅹ关闭窗体A后则会执行。
下面是窗体A中的代码(为说明核心问题,作简化处)。
Private Sub 调用窗体B_Click()
Open ThisDrawing.Path & "\" & "temp1.txt" For Output As #1
Print #1, 1
Close #1
'隐藏
Me.hide
Open ThisDrawing.Path & "\" & "temp2.txt" For Output As #1
Print #1, 2
Close #1
'调用
窗体B.show
Open ThisDrawing.Path & "\" & "temp3.txt" For Output As #1
Print #1, 3
Close #1
End Sub
下面是窗体B中的代码(为说明核心问题,作简化处)。
Private Sub 返回窗体A_Click()
'卸载
Unload Me
'返回
窗体A.show
End Sub
上面程序中,前面两个文本文件可以正常生成。第三个文件无法正常生成,除非关闭窗体A。从生成的文件时间上可以证实上面的判断。