我创建在Outlook VBA的用户窗体,我已经设置了提供在选择不同的选项选项按钮,一切工作正常,如果我只去一次经过然而,
如果我回去,通过第二次的选项按钮从以前的运行通过仍处于选中状态。
你显示窗体的默认实例。
UserForm1.Show
您现在看到意味着你有那就是维持调用之间的状态的短暂的,全球范围内的对象。
如果你想“开始清理”每次显示的形式的时候,你有两个选择 - 一个将Unload
瞬态对象,当你用它做:
UserForm1.Show
'do stuff
Unload UserForm1
另一个(更清洁IMO)将停止使用,全球范围的对象,并创建一个本地所代替范围的,具有更清晰的寿命:
With New UserForm1 ' object created here
.Show
'do stuff
End With ' object dies here
要么:
Dim frm As UserForm1
Set frm = New UserForm1 ' object created here
frm.Show
'do stuff
'frm object goes out of scope and is destroyed at the end of the procedure
这是否伤了你的其他代码,取决于有多少的其它代码对窗体的默认实例编写。您正在使用Me
在您所提供的示例代码,这是一个好兆头:这意味着你已经写了反对任何当前实例是代码,而不是如For Each c In UserForm1.Controls
,这将是在遍历窗体的默认实例的控制 - 这可能是在不同的状态下比在当前实例的控制。
有关使用表单的详细信息,请参阅UserForm1.Show,文章我去年在细节有什么不对的默认实例的方式解释写道。