【问题标题】:Run-time Error 424 Object Required UserForm doesnt exist运行时错误 424 对象所需的用户窗体不存在
【发布时间】:2015-07-11 00:44:34
【问题描述】:

我正在尝试执行此站点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

【问题讨论】:

  • 尝试添加 UserForm - 在 Visual Basic 编辑器中单击插入用户窗体按钮(或转到插入 > 用户窗体)
  • 在我的例子中,调试器突出显示了 UserForm.Show 行,但问题出在 Userform_Initialize() 过程中。我有一行代码与我未能声明对象的用户窗体无关。 VBA 调试器的限制可能会导致您无法搜索错误。

标签: vba excel


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    我假设这个问题已经解决,但对于刚刚看到它的任何人来说。我遇到了这个问题,结果是我从表单中删除了一个 ComboBox,但它仍然在代码中被引用。一旦我删除了那部分代码,它就运行得很好。

    【讨论】:

      【解决方案3】:

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

      它被给出为

      Private Sub UserForm_Initialize()
      

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

      StdTimeCalculatorForm
      

      并将代码更改为

      Private Sub StdTimeCalculatorForm_Initialize()
      

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

          我可以通过改变来解决这些问题

          Private Sub UserForm_Initialize()
          

          Private Sub DinnerPlannerUserForm_Initialize()
          

          看看有没有用

          【讨论】:

            【解决方案6】:

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

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

            【讨论】:

              【解决方案7】:

              这对我来说是“错字”问题 - 我使用的是相同的 DinnerPlannerUserForm 指南。一旦我检查了所有(名称)框都与代码中引用的名称完全相同,就可以工作了。

              该指南很好,除了元素“显示用户表单”步骤,它可能会提醒我们仔细检查名称是否准确。大约 6 年前,我第一次使用本指南,多年来它帮助我构建了一些非常有用的表单。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2018-10-24
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多