我有一个用户窗体加载另一个用户窗体
Private Sub CommandButtonAddRule_Click()
UserFormAddRule.Show
End Sub
如果UserFormAddRule
使用“x”或带
Unload Me
代码在.show命令之后返回,但随后关闭第一个userform。这是不可能发生的事情。如何阻止第一个用户窗体关闭?
答案 0 :(得分:0)
Dim UForm As Object
Dim i As Integer
i = 0
For Each UForm In VBA.UserForms
Debug.Print UForm.Name
If UForm.Name <> "FormNameThatMustBeLeftOpen"
UForm.Hide
Unload VBA.UserForms(i)
i = i + 1
End If
Next
您好上面已经尝试过,经过测试并且应该可行。你的contrl结构可以是if语句,select case或do while。逻辑没有区别。如果你需要使用不同的控制结构或完整的例子进行相同的实现,请给我一个大喊。
或者你可以
Dim i As Long
For i = VBA.UserForms.Count - 1 To 0 Step -1
If UForm.Name <> "FormNameThatMustBeLeftOpen"
Unload VBA.UserForms(i)
End If
Next i
答案 1 :(得分:0)
使用或不使用VB编辑器显示和卸载子项
在父表单中,要创建子项,并假设子项是模态的,以便在子项可见时无法与父项进行交互(默认情况下),请使用:
dim frm as frmChild
设置frm = new frmChild
...然后调用frmChild的公共方法来初始化它从父表单中需要的任何变量,以便执行父委托给子进程的任何任务。
在子表单中,init方法的最后一行应该是:
me.show
然后在孩子内部使用:
me.hide
......当你在孩子内部完成时。
然后在父表单中,在调用初始化并显示子项的子公共方法之后,立即使用以下行卸载子项和空闲内存:
设置frm =无
父表格将保持开放状态。