Excel VBA: ошибка компиляции: не найден метод или элемент данных

EDIT: Чтобы уточнить, код, показанный ниже, находится внутри модуля, и UserForm содержится в его собственном коде.

У меня есть следующий код. Когда я запускаю его, Excel бросает мне ошибку компиляции: Method or data member not found и выделяет следующий фрагмент кода: .showInputsDialog . Я не знаю, как решить эту ошибку.

Чтобы предоставить дополнительную информацию, Sub sportUserForm должен вызвать пользовательскую форму sportsUsrFrm . Любая помощь в этом вопросе очень ценится.

 Option Explicit Sub sportUserForm() Dim sSport As String, sPreference As String If sportsUsrFrm.showInputsDialog(sSport, sPreference) Then MsgBox "Your favorite sport is " & sSport & ", and you usually " _ & sPreference & "." Else MsgBox "Sorry you don't want to play." End If End Sub Public Function showInputsDialog(sSports As String, sPreference As String) As Boolean Call Initialize Me.Show If Not cancel Then If optBaseball.Value Then sSport = "Baseball" ElseIf optBasketball.Value Then sSport = "Basketball" Elss sSport = "Football" End If If optTV.Value Then sPreference = "watch on TV" _ Else: sPreference = "go to games" End If showInputsDialog = Not cancel Unload Me End Function 

Код пользователя для sportUsrFrm

 Option Explicit Private Sub cmdCnl_Click() Me.Hide cancel = True End Sub Private Sub cmdOK_Click() If Valid Then Me.Hide cancel = False End Sub 

Изображение пользователя UserForm

Вы получаете сообщение об ошибке, потому что showInputsDialog не является членом формы, это член модуля, из которого вы его вызываете. Вы также должны получать ошибки компилятора на этих двух строках …

 Call Initialize Me.Show 

… потому что вы, похоже, перепутали модуль и код формы.

Тем не менее, вы слишком задумываетесь об этом. UserForm – это модуль класса, и он может быть сохранен в переменной (или в этом случае в блоке With ) и может иметь свойства. Я бы добавил свойство « Cancelled в форму:

 'In sportsUsrFrm Option Explicit Private mCancel As Boolean Public Property Get Cancelled() As Boolean Cancelled = mCancel End Property Private Sub cmdCnl_Click() Me.Hide mCancel = True End Sub Private Sub cmdOK_Click() If Valid Then Me.Hide '<-- You still need to implement `Valid` End Sub 

И затем назовите это так:

 Sub sportUserForm() With New sportsUsrFrm .Show Dim sSport As String, sPreference As String If Not .Cancelled Then If .optBaseball.Value Then sSport = "Baseball" ElseIf .optBasketball.Value Then sSport = "Basketball" Else sSport = "Football" End If If .optTV.Value Then sPreference = "watch on TV" Else sPreference = "go to games" End If MsgBox "Your favorite sport is " & sSport & ", and you usually " _ & sPreference & "." Else MsgBox "Sorry you don't want to play." End If End With End Sub 
  • как изменить текст на числовой в VBA Excel
  • Ошибка соответствия: ожидаемый разделитель или)
  • Excel 2013 64-битная синтаксическая ошибка VBA «Ошибка компиляции:« Ожидаемое: конец заявления »
  • Sub в VBA, который принимает диапазон
  • Ошибка 400 Сообщение - не знаю, как его решить для формулы
  • Захват ошибки компиляции в подпрограмме в VBA
  • Файл VBA Excel не компилируется: Sub или Function не определены
  • Ошибка компиляции при работе на другой машине
  • Ошибка компиляции рабочей книги Excel после вызова sub
  • Ошибка VBA Array и String
  • Макро работает в 2013 году, а не в 2010 году: «Ошибка компиляции: метод или элемент данных не найден»
  • Interesting Posts

    excel – отпускные расходы, подведите итог, кто заплатил за то, что

    Count spesific number в строке числа в excel

    Подсчет количества видимых строк после автофильтра

    Данные проверки Excel 2 в ячейке

    Попытка удалить верхнюю строку из таблицы Excel с помощью Python

    VBA Сортировка DIR для передачи данных в алфавитном порядке

    vba с использованием формулы суммы R1C1, относящейся к другому листу

    Совместим ли формат номера Excel / EPPlus с DateTimeFormat.ShortDatePattern?

    Создание длинных переменных работает в 64-битном и 32-битном Excel VBA

    Как выделить даты в excel с использованием форматирования условных выражений в зависимости от имени потребителя

    Использование Для каждого цикла не удается выполнить цикл через рабочие листы

    Excel VBA – соединение Oracle DB – выполнение запроса обновления не работает

    Как преобразовать лист в строку? Или мне даже нужно?

    Количество символов, а затем Trim

    Импортировать лист Excel в базу данных Postgresql

    Давайте будем гением компьютера.