2016-08-30 96 views
0

有人可以帮我弄清楚为什么我得到这个错误吗?这里是我的代码,它说就行的错误开始3错误424所需对象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

add'Option Explicit',它会告诉你你还没有定义哪个部分。 – cyboashu

回答

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,而不是卸载对象,实现你的逻辑形式的代码 - 背后。未来你将会感恩。