运行时错误424对象必需UserForm不存在

时间:2015-07-11 00:44:35

标签: excel vba excel-vba

我正在尝试执行此网站www.excel-easy.com上写的内容但是当我单击工作表中的commandbutton(来自ActiveX控件)时,就像网站指示的那样,没有任何反应。我尝试使用表单控件中的按钮,但它说错误就在于此 ---> DinnerPlannerUserForm.Show

我的代码:

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

6 个答案:

答案 0 :(得分:2)

当您从表单中删除或删除文本框时,也会发生此错误,但忘记将其从初始化行中删除,例如:

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

答案 1 :(得分:2)

我使用相同的教程并通过更改Initialize命令解决了问题:

的形式给出
Private Sub UserForm_Initialize()

我将用户表单命名为(出于我自己的目的)

StdTimeCalculatorForm

并将代码更改为

Private Sub StdTimeCalculatorForm_Initialize()

解决了这个问题。希望这会有所帮助。

答案 2 :(得分:1)

我能够通过改变

来解决这些问题
Private Sub UserForm_Initialize()

Private Sub DinnerPlannerUserForm_Initialize()

看看它是否有效

答案 3 :(得分:0)

根据你说的话很难说出来。但是 - 您说使用F8的事实表明错误在Private Sub UserForm_Initialize()表明用户表单存在且VBA知道如何找到它(否则当您单击表单按钮时它的初始化事件不会被触发) 。因此 - 它是初始化子中的一条线,它是罪魁祸首。具体标记哪一行?我猜测其中一个控件(例如DinnerComboBox)名称中的简单拼写错误就是问题。

答案 4 :(得分:0)

我假设这个问题已经解决,但对于刚刚看过它的人来说。我有这个问题,结果是我从表单中删除了一个ComboBox,但它仍然在代码中被引用。一旦我删除了代码的那一部分,它就能很好地工作。

答案 5 :(得分:0)

我有同样的问题。我在一些工作簿中创建了相同的表单,并使用了相同的变量名。我在代码中粘贴了UserForm_Initialize。代码中的所有内容看起来都不错,但是我回过头来仔细检查了表单上的变量名,发现我忘记在表单上命名两个文本框。我的代码试图将值分配给txtMaxLines和txtAmount,但是我没有在表单上命名它们,所以对于vba就像它们不存在一样。

我希望这会对某人有所帮助,因为如果您遇到与我相同的问题,则在打开vba编辑器时,它不会转到错误所在的行,并且错误说明根本没有帮助。 / p>