2015-07-11 91 views
2

我試圖做這個網站上寫的東西www.excel-easy.com但是當我單擊工作表中的commandbutton(來自ActiveX控件),就像網站指示的一樣,沒有任何反應。我試圖用從表單控件按鈕,但它說,錯誤是在這個 ---> DinnerPlannerUserForm.Show運行時錯誤424對象所需的用戶窗體不存在

我的代碼:

Sub Button2_Click() 
    DinnerPlannerUserForm.Show 
End Sub 

當我用F8,它說錯誤在這裏 - >Private Sub UserForm_Initialize()

Private Sub UserForm_Initialize() 

    'Empty NameTextBox 
    NameTextBox.Value = "" 

    'Empty PhoneTextBox 
    PhoneTextBox.Value = "" 

    'Empty CityListBox 
    CityListBox.Clear 

    'Fill CityListBox 
    With CityListBox 
     .AddItem "San Francisco" 
     .AddItem "Oakland" 
     .AddItem "Richmond" 
    End With 

    'Empty DinnerComboBox 
    DinnerComboBox.Clear 

    'Fill DinnerComboBox 
    With DinnerComboBox 
     .AddItem "Italian" 
     .AddItem "Chinese" 
     .AddItem "Frites and Meat" 
    End With 

    'Uncheck DataCheckBoxes 
    DateCheckBox1.Value = False 
    DateCheckBox2.Value = False 
    DateCheckBox3.Value = False 

    'Set no car as default 
    CarOptionButton2.Value = True 

    'Empty MoneyTextBox 
    MoneyTextBox.Value = "" 

    'Set Focus on NameTextBox 
    NameTextBox.SetFocus 

End Sub 
+0

嘗試添加'UserForm' - 在Visual Basic編輯器中,單擊插入UserForm按鈕(或轉到插入> UserForm) – 0m3r

+0

在我的情況下,調試器突出顯示UserForm.Show行,但問題出在Userform_Initialize 。我有一行代碼與UserForm無關,我沒有聲明一個對象。 VBA的調試器的限制可能會導致您對錯誤的搜索。 – PhillipOReilly

回答

0

根據你說的很難說。但是 - 你說的使用F8的事實表明錯誤在Private Sub UserForm_Initialize(),這表明用戶表單存在並且VBA知道如何找到它(否則當你點擊表單按鈕時它的初始化事件不會被觸發)。因此 - 這是罪魁禍首初始化子行中的一條。哪條線被特別標記?我猜測其中一個控件(例如DinnerComboBox)的名稱中有一個簡單的錯字是問題。

0

我假設這個問題已經解決,但是對於剛纔看到它的任何人。我遇到了這個問題,事實證明我已經從表單中刪除了一個ComboBox,但它仍然在代碼中被引用。一旦我刪除了代碼的那一部分,它運行的很好。

0

我能夠通過改變

Private Sub UserForm_Initialize() 

解決這些到

Private Sub DinnerPlannerUserForm_Initialize() 

看看它的工作原理,當你刪除或從表單中刪除文本框

1

,也會出現此錯誤,但忘記在初始化時將其從一行中刪除,例如:

Private Sub UserForm_Initialize() 
    CommandButton2.Enabled = False 
    TextBox4.Enabled = False 'textbox deleted from form 
End sub 
0

我用的是相同的教程,並通過改變初始化命令解決了這個問題:

它給出

Private Sub UserForm_Initialize() 

我叫我的用戶形式(我自己的目的)

StdTimeCalculatorForm 

並將代碼更改爲

Private Sub StdTimeCalculatorForm_Initialize() 

解決了這個問題。希望這可以幫助。

相關問題