2016-08-30 95 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,而不是卸載對象,實現你的邏輯形式的代碼 - 背後。未來你將會感恩。