Ошибка выполнения 424 Требуется объект UserForm не существует
Я пытаюсь сделать то, что написано на этом сайте http://www.excel-easy.com/vba/userform.html, но когда я нажимаю 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
7 ответов
Эта ошибка также может возникать, когда вы удаляете или удаляете текстовое поле из вашей формы, но не забудьте удалить его из строки при инициализации, например:
Private Sub UserForm_Initialize()
CommandButton2.Enabled = False
TextBox4.Enabled = False 'textbox deleted from form
End sub
Я предполагаю, что эта проблема была решена, но для тех, кто только сейчас смотрит на это. У меня была эта проблема, и оказалось, что я удалил ComboBox из моей формы, но он все еще упоминается в коде. Как только я удалил этот раздел кода, он работал прекрасно.
Я использовал тот же учебник и решил проблему, изменив команду Initialize:
Дается как
Private Sub UserForm_Initialize()
Я назвал свою форму пользователя (для моих собственных целей)
StdTimeCalculatorForm
и изменив код на
Private Sub StdTimeCalculatorForm_Initialize()
решил проблему. Надеюсь это поможет.
У меня была такая же проблема. Я создавал одну и ту же форму в нескольких книгах и использовал одни и те же имена переменных. Я вставил в мой код для UserForm_Initialize. В коде все выглядело хорошо, но я вернулся и дважды проверил имена переменных в форме и понял, что забыл назвать два текстовых поля в моей форме. Мой код пытался присвоить значения txtMaxLines и txtAmount, но я не назвал их в форме, поэтому для vba было похоже, что они не существуют.
Я надеюсь, что это кому-то поможет, потому что, если у вас возникла та же проблема, что и у меня, то, когда он открывает редактор vba, он не переходит к строке с ошибкой и описание ошибки вообще не помогает.
Трудно сказать, основываясь на том, что вы сказали. Но - тот факт, что вы сказали, используя F8, указывает на то, что ошибка в Private Sub UserForm_Initialize()
предполагает, что пользовательская форма существует, и VBA знает, как ее найти (в противном случае событие инициализации не будет запущено при нажатии кнопки формы). Следовательно - это одна из строк в инициализирующем подпрограмме, которая является виновником. Какая строка специально помечена? Я предполагаю, что проблема заключается в простой опечатке имени одного из элементов управления (например, DinnerComboBox).
Я смог решить их, изменив
Private Sub UserForm_Initialize()
в
Private Sub DinnerPlannerUserForm_Initialize()
Посмотрите, работает ли это
Для меня это были проблемы с опечатками - я использовал то же руководство DinnerPlannerUserForm. Сработало, как только я проверил, что все поля (Имя) были точно такими же, как имена, указанные в коде.
Руководство хорошее, за исключением шага элемента «Показать пользовательскую форму», и, возможно, оно могло бы напомнить нам дважды проверить правильность имен. Я впервые использовал это руководство около 6 лет назад, и за эти годы оно помогло мне создать несколько невероятно полезных форм.