vba在卸载时以子用户窗体卸载所有用户窗体
我有一个userform,它加载另一个userformvba在卸载时以子用户窗体卸载所有用户窗体,vba,Vba,我有一个userform,它加载另一个userform Private Sub CommandButtonAddRule_Click() UserFormAddRule.Show End Sub 如果UserFormAddRule使用“x”或带有 Unload Me 代码在.show命令之后返回,但随后也关闭第一个userform。这是绝对不能发生的。如何防止第一个userform也关闭?Dim UForm as Object Dim UForm As Object Dim i A
Private Sub CommandButtonAddRule_Click()
UserFormAddRule.Show
End Sub
如果UserFormAddRule
使用“x”或带有
Unload Me
代码在.show命令之后返回,但随后也关闭第一个userform。这是绝对不能发生的。如何防止第一个userform也关闭?Dim UForm as Object
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
作为整数的Dim i
i=0
对于VBA.UserForms中的每个UForm
Debug.Print UForm.Name
如果是UForm.Name“formnamethastbeleftopen”
隐匿
卸载VBA.UserForms(i)
i=i+1
如果结束
下一个
您好,以上已经过尝试和测试,应该可以正常工作。控件结构可以是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
Dim i尽可能长
对于i=VBA.UserForms.Count-1到0步骤-1
如果是UForm.Name“formnamethastbeleftopen”
卸载VBA.UserForms(i)
如果结束
接下来我
在打开或不打开VB编辑器的情况下显示和卸载子项
在父窗体中,若要创建子项,并假设子项是模态的,因此在子项可见(默认情况下)时无法与父项交互,请使用:
将frm变为frm儿童
设置frm=新frmChild
。。。然后调用frmChild的公共方法来初始化它从父窗体需要的任何变量,以便执行父窗体委托给子窗体的任何任务
在子窗体中,init方法的最后一行应该是:
给我看
然后在子对象中使用:
我,藏起来
。。。当你在孩子体内完成时
然后在父窗体中,在调用初始化并显示子级的子级公共方法后,立即使用以下行卸载子级并释放内存:
设置frm=无
父窗体将保持打开状态。它不应该这样做。在干净的2个用户窗体上尝试它。