Excel – VBA: передать переменную от Sub до Userform

Я прочитал и применил решение, которое я нашел по подобным темам, но в моем случае ничего не работает.

Итак, я хочу передать переменную из одной части моего модуля1 в пользовательскую форму. Это строка под названием "provinceSugg".

Вот соответствующая часть моего кода:

Public provinceSugg As String Sub probaCity() [...] If province = "" And city <> "" Then provinceSugg = sCurrent.Cells(p, db_column).Offset(0, 1).Value UserForm2.Label1 = "Do you mean " & city & " in " & provinceSugg & " ?" UserForm2.Label1.TextAlign = fmTextAlignCenter UserForm2.Show Else End If End Sub 

И затем в моем пользовательском коде:

 Private Sub userformBtn1_Click() MsgBox provinceSugg sMain.Range("J6").Value = provinceSugg End Sub 

Когда я запускаю свою программу:

1 / У меня есть содержимое областиSugg, показывающее в MsgBox, вызванном из моего субпользователя (так что существует провинцияSugg, это не пустая переменная).
2 / MsgBox, вызванный из пользовательской формы, пуст (поэтому передача значения не удалась), и моя программа вылетает при запуске «sMain.Range (« J6 »). Value = provinceSugg« с чем-то вроде «Ошибка 424 Object Required» (поэтому переменная не удалось передать пользовательскую форму).

Я пробовал все, что я нашел на форуме, и здесь (разные способы указать, что провинция является общедоступной переменной, но все еще сбой …).

Заранее спасибо за вашу помощь !

Вы могли бы создавать общедоступные переменные в пользовательской форме, которые могут быть установлены модулем.

Эти переменные доступны только в пользовательской форме по мере ее загрузки.

В Userform объявите общедоступные переменные для обоих объектов.

 Public sMain As Worksheet Public provinceSugg as string Private Sub userformBtn1_Click() MsgBox provinceSugg sMain.Range("J6").Value = provinceSugg End Sub 

Внутри модуля вы можете оценить обе эти переменные.

 Sub probaCity() [...] If province = "" And city <> "" Then provinceSugg = sCurrent.Cells(p, db_column).Offset(0, 1).Value With UserForm2 .provinceSugg = provinceSugg Set .sMain = sMain .Label1 = "Do you mean " & city & " in " & provinceSugg & " ?" .Label1.TextAlign = fmTextAlignCenter .Show End With End If End Sub 
 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim selectColumn selectColumn= Split(Target.Address(1, 0), "$")(0) Call UserFormStart(selectColumn) End Sub 

Внутренний основной модуль

 Public columnSelection As String ... Public Sub UserFormStart(ByVal columnRef As String) 'MsgBox "Debug columnRef=" & columnRef columnSelection = columnRef UserForm1.Show End Sub 

Внутри UserForm

 Private Sub UserForm_Initialize() 'MsgBox "Debug UserForm_Initialize =" & columnSelection ... End Sub 

Worksheet_SelectionChange вызывает sub в модуле, где columnSelection объявляется открытым и видимым из UserForm. Я использовал три разные переменные для столбца Reference, чтобы показать, что там, где пользовательский интерфейс имеет доступ к модулю. Вышеприведенное все работает и занимает много времени, чтобы найти и отработать, следовательно, представление. Счастливые охотники

  • Назначение обработчиков событий для элементов управления в пользовательской форме, созданных динамически в VBA, в подпункте
  • Элемент управления Excel VBA Excel дает ошибку «Недопустимое значение свойства» при установке ширины
  • Excel VBA Userform Listbox Динамическое контекстное меню с использованием метода .OnAction
  • Определите, какая строка VBA выполняется в настоящий момент для панели выполнения
  • Удалите всю строку на основе дубликата в ячейке без той, которая имеет конкретное значение ячейки
  • Excel VBA Userform, обновить и удалить базу данных,
  • Internet Explorer не будет закрыт после завершения моего модуля
  • Очистить каскадный ComboBox при повторном выборе
  • Excel VBA - не может ссылаться на объекты / не может отбрасывать информацию в лист
  • Excel VBA: копирование цвета из ячейки. Interior.Color в MSForms.Label.BackColor
  • Как играть в локальный видеофайл в цикле на пользовательской форме excel?
  • Interesting Posts

    Формула, чтобы найти соответствующее значение строки на основе ячеек в нескольких столбцах

    Ограничение контроля календаря даты в Excel 2013 до одного столбца и общей строки

    Текст знака доллара Excel не преобразуется в число

    как изменить формат даты в excel на текст, чтобы он мог конвертировать в mysql

    Как скомпилировать условное правило Excel 3-мерного масштаба

    необходимо скопировать данные с одного листа на другой в зависимости от значения первого листа

    Вызов суб в форме

    как скопировать первое значение матрицы в листе excel?

    VBA Looping через excel файлы в выбранном каталоге – копирование данных и вставка в разные листы

    VBA Excel Вставка AutoSum в динамически созданный стол

    Выполните действие ЕСЛИ активный лист (или нет) в группе листов

    Открытие шаблона слова и сохранение в качестве .doc текущей папки книги – VBA в excel

    Динамическая валидация VBA текстового поля на основе выбора в выпадающем меню

    Дата выпуска в формате Excel – строка

    Как получить значение DateDiff в миллисекундах в VBA (Excel)?

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