错误424需要对象3

时间:2016-08-30 19:12:32

标签: vba excel-vba excel

有人可以帮我弄明白为什么我会收到这个错误吗?这是我的代码,它说错误从第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

1 个答案:

答案 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而不是卸载对象,并在表单之外实现代码 - 背后。未来你会感恩。