有人可以帮我弄明白为什么我会收到这个错误吗?这是我的代码,它说错误从第3行开始。
Sub Select_Button()
Msg = ""
For i = 0 To ListBox7.ListCount - 1
If ListBox7.Selected(i) Then
Msg = Msg & ListBox7.List(i) & vbNewLine
End If
Next i
MsgBox "You Selected: " & vbNewLine & Msg
Unload UserForm
End Sub
答案 0 :(得分:3)
UserForm
是类,而不是对象。 Unload
用于卸载对象。
错误源于这一行:
Unload UserForm
如果您的表单名为UserForm1
,则应显示为:
Unload UserForm1
但这违反了最佳做法,最终会让你陷入困境。
表单有一个默认的全局实例,所以当你这样做时:
UserForm1.Show vbModal
您正在使用默认实例,而不是新对象。如果您执行Unload UserForm1
,那么您将卸载默认实例,这意味着如果您做了正确的事情并使用对象这样:
With New UserForm1
.Show vbModal
'...
End With
然后卸载默认实例绝对不会做你想象的那样。
这就是为什么您希望在引用对象的当前实例时使用Me
关键字的原因。因此,要卸载UserForm1
对象的当前实例,您需要执行以下操作:
Unload Me
考虑调用Me.Hide
而不是卸载对象,并在表单之外实现代码 - 背后。未来你会感恩。