Вызов пользовательской формы в Excel VBA и продолжение в зависимости от того, какая кнопка была нажата

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

Пример:

Я нажимаю на кнопку, которая выполняет следующий код и делает видимость моего прогресса:

Private Sub GWPCClearDataButton_Click() ProgressBar.Show End Sub 

В моей пользовательской форме у меня есть следующий код:

 Private Sub UserForm_Activate() GWPCClearData End Sub 

Это вызывает один из моих четырех модулей, который работает до сих пор.

Теперь вот где я застрял.

Конечно, я хотел бы использовать тот же самый прогресс для всех модулей, но как я могу определить в блоке кода пользовательской формы, на какую кнопку щелкнул, а затем в зависимости от этого вызова другого модуля?

Пример:

 Private Sub GWPCClearDataButton_Click() ProgressBar.Show End Sub Private Sub GSEPClearDataButton_Click() ProgressBar.Show End Sub 

UserForm:

 Private Sub UserForm_Activate() If "BUTTON_NAME" = "GWPCClearDataButton" Then GWPCClearData ElseIf "BUTTON_NAME" = "GSEPClearDataButton" Then GSEPClearData End if End Sub 

Как я мог это сделать? Мне еще предстоит найти возможность передать параметр моей пользовательской форме, которая будет содержать имя кнопки.

Спасибо за любую помощь.

В вашей форме

 Sub Start_Form(Called_From as string) 'Process Called_From as needed End Sub 

Когда вы вызываете вашу форму, просто вызывайте sub first, как показано ниже.

 <form_name>.Start_Form "Button Called From" <form_name>.Show 

В основном вам нужно передать переменную через другую суб (можно назвать что угодно) в пользовательской форме, а затем показать форму после


Код формы пользователя

 Dim test Private Sub UserForm_Activate() MsgBox test End Sub Sub start(tt) test = tt End Sub 

Код модуля

 Sub t() UserForm1.start "Hello World!" UserForm1.Show End Sub 
  • Выровнять Userform с ячейками в Excel
  • не удалось заполнить combobox, используя .rowsource {vba excel}
  • Изменения отслеживания Excel VBA
  • Установите фокус обратно в окно приложения после показа пользовательской формы
  • Пользовательская форма VBA с DTPicker
  • EXCEL VBA: код пользовательской формы, улучшение повторяющихся кодов
  • Получить функцию () в качестве элемента управления
  • Excel VBA - Как открыть Userform с использованием переменной в имени
  • Отображение Excel на основном мониторе
  • Измените пользовательскую форму для работы с несколькими листами
  • Excel VBA: копирование цвета из ячейки. Interior.Color в MSForms.Label.BackColor
  • Interesting Posts

    Выровнять по правому краю с помощью html-стиля

    Используя XML-фильтр, как различать два одинаковых текста в одном и том же Xpath?

    Как программировать имя рабочего листа в excel?

    Файл VBA – xlsx создает временный файл при открытии

    Динамический именованный диапазон VBA как ошибка столбца RowSource

    При попытке прочитать #NAME? Значение от excel до строки дает ошибку несоответствия типа

    Excel: использование условия «И» для сравнения полученных значений

    excel vba – косвенная копия через адрес строки / столбца?

    Excel – генерировать случайный номер на основе двух других столбцов

    Краткая проблема с макросом

    Данные публичной библиотеки во времени

    Как сопоставить данные столбцов на одном листе excel с другим, а затем возвращать целую строку в листе 1, если найдено совпадение

    Получить ссылку на ячейку, содержащую определенный текст

    Excel VBA: каково максимальное количество строковых элементов, которые могут храниться в массиве

    Target.count, вызывающий ошибку переполнения

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