介绍:我知道-显示UserForms-最佳做法是处理QueryClose用户窗体代码内(If CloseMode = vbFormControlMenu ...)在Unload Me其中不执行任何操作,仅执行胆小的Me.Hide指令(在通过防止[x]参与并最终自我毁灭之后Cancel = True)在[类别]代码中设置相关的变量/ [属性](例如.IsCancelled=True)为了能够由调用代码卸载UF 。有用的链接出色的概述“ UserForm1.Show?” 可以在https://rubberduckvba.wordpress.com/2017/10/25/userform1-show/上找到, 也可以在许多示例性SO答案中找到(Mathieu Guindon又名Mat's Mug和RubberDuck)。1)模态用户窗体的工作示例据我了解-并且我确实尝试学习-,以下代码对于模态 UF 应该没问题:情况1a) ..具有UF实例的局部变量,通常可以看到:Public Sub ShowFormA Dim ufA As UserForm1 Set ufA = New UserForm1' show userform ufA.Show ' equivalent to: ufA.Show vbModal' handle data after user okay If Not ufA.IsCancelled Then ' do something ... End If' >> object reference destroyed expressly (as seen in some examples) unload ufAEnd Sub情况1b) ..没有局部变量,但使用了With New代码块:' ----------------------------------------------------------' >> no need to destruct object reference expressly,' as it will be destroyed whenever exiting the with block' ---------------------------------------------------------- With New UserForm1 .Show ' equivalent to: ufA.Show vbModal ' handle data after user okay If Not .IsCancelled Then ' do something ... End If End With2)问题使用MODELESS UserForm实例会出现问题。好的,with块方法(参见1b)应该足以对其进行x-it处理后销毁任何对象引用: With New UserForm1 .Show vbModeless ' << show modeless uf End With如果我尝试,但是a)获取有关可能的用户取消的信息以及b)Unload如果在Show指令后使用局部变量(例如“ ufA”)进行了洗礼,则为表格,正是出于表单的原因,所有代码行将立即执行:代码显示表单,下一刻..代码没有发现用户取消,因为没有时间进行任何用户操作,下一刻..[如果用户表单使用本地变量,代码将卸载表单]3)问题我如何处理a)通过MODELESS表单的调用代码正确报告的UserForm取消,以及b)如果使用局部变量,则进行(必要吗?)卸载?
3 回答
- 3 回答
- 0 关注
- 1014 浏览
相关问题推荐
添加回答
举报
0/150
提交
取消