Excel VBA UserForm
В этой главе вы узнаете, как создать Excel VBA UserForm. UserForm мы собираемся создать выглядит следующим образом:
Добавление элементов управления
Чтобы добавить элементы управления в UserForm, выполните следующие действия.
-
Откройте
ссылка: / VBA-Create-A-макро # зрительно-Basic-редактор [Visual Basic Editor]
. Если проводник проекта не отображается, нажмите кнопку Просмотр, Project Explorer. -
Нажмите кнопку Вставить, UserForm. Если панель инструментов не появляется автоматически, нажмите кнопку View, Toolbox. Экран должен быть установлен, как показано ниже.
-
Добавьте элементы управления, перечисленные в таблице ниже. После того, как это было закончено, результат должен быть согласован с изображением UserForm, показанным ранее. Например, создать элемент управления для ввода текста, щелкнув на TextBox из панели инструментов. Далее, вы можете перетащить текстовое поле на UserForm. Когда вы приедете на раме автомобиля, не забудьте сделать этот кадр первым, прежде чем разместить две дополнительные кнопки в нем.
-
Изменение названия и подписи элементов управления в соответствии с таблицей ниже. Имена используются в коде Excel VBA. Титры являются те, которые появляются на экране. Это хорошая практика, чтобы изменить имена элементов управления. Это позволит легче читать ваш код. Для того, чтобы изменить имена и подписи элементов управления, выберите Вид, Свойства окна и нажмите на каждый элемент управления.
Control |
Name |
Caption |
Userform |
DinnerPlannerUserForm |
Dinner Planner |
Text Box |
NameTextBox |
|
Text Box |
PhoneTextBox |
|
List Box |
CityListBox |
|
Combo Box |
DinnerComboBox |
|
Check Box |
DateCheckBox1 |
June 13th |
Check Box |
DateCheckBox2 |
June 20th |
Check Box |
DateCheckBox3 |
June 27th |
Frame |
CarFrame |
Car |
Option Button |
CarOptionButton1 |
Yes |
Option Button |
CarOptionButton2 |
No |
Text Box |
MoneyTextBox |
|
Spin Button |
MoneySpinButton |
|
Command Button |
OKButton |
OK |
Command Button |
ClearButton |
Clear |
Command Button |
CancelButton |
Cancel |
7 Labels |
No need to change |
Name:, Phone Number:, etc. |
Примечание: поле со списком является выпадающим списком, из которого пользователь может выбрать элемент или заполнить его / ее собственный выбор. Только один из переключателей может быть выбран.
Показать UserForm
Чтобы показать UserForm, поместите ссылку: / VBA создать мини-макро # командной кнопки [Кнопка управления]
на листе и добавьте следующую строку кода:
Private Sub CommandButton1_Click() DinnerPlannerUserForm.Show End Sub
Сейчас мы собираемся создать Sub UserForm_Initialize. При использовании метода Show для UserForm, этот подпункт будет автоматически выполняться.
-
Откройте
ссылка: / VBA-Create-A-макро # зрительно-Basic-редактор [Visual Basic Editor]
. -
В окне Project Explorer, щелкните правой кнопкой мыши на DinnerPlannerUserForm, а затем нажмите кнопку Просмотр кода.
-
Выберите 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. Хотя это выглядит аккуратным уже ничего не случится еще когда мы нажмем кнопку команд на UserForm.
-
Откройте
ссылка: / VBA-Create-A-макро # зрительно-Basic-редактор [Visual Basic Editor]
. -
В окне Project Explorer дважды щелкните на DinnerPlannerUserForm.
-
Дважды нажмите на кнопку Деньги спина.
-
Добавьте следующую строку кода:
Private Sub MoneySpinButton_Change() MoneyTextBox.Text = MoneySpinButton.Value End Sub
Объяснение: это строка кода обновляет текстовое поле, когда вы используете кнопку отжима.
-
Дважды нажмите на кнопку OK.
-
Добавьте следующие строки кода:
Private Sub OKButton_Click() Dim emptyRow As Long 'Make Sheet1 active Sheet1.Activate 'Determine emptyRow emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1 'Transfer information Cells(emptyRow, 1).Value = NameTextBox.Value Cells(emptyRow, 2).Value = PhoneTextBox.Value Cells(emptyRow, 3).Value = CityListBox.Value Cells(emptyRow, 4).Value = DinnerComboBox.Value If DateCheckBox1.Value = True Then Cells(emptyRow, 5).Value = DateCheckBox1.Caption If DateCheckBox2.Value = True Then Cells(emptyRow, 5).Value = Cells(emptyRow, 5).Value & " " & DateCheckBox2.Caption If DateCheckBox3.Value = True Then Cells(emptyRow, 5).Value = Cells(emptyRow, 5).Value & " " & DateCheckBox3.Caption If CarOptionButton1.Value = True Then Cells(emptyRow, 6).Value = "Yes" Else Cells(emptyRow, 6).Value = "No" End If Cells(emptyRow, 7).Value = MoneyTextBox.Value End Sub
Объяснение: во-первых, мы активизируем Лист1. Далее, мы определяем emptyRow. Переменная emptyRow является первой пустой строкой и увеличивает каждый раз, когда добавляется запись. Наконец, мы передаем информацию из UserForm к определенным столбцам emptyRow.
-
Дважды нажмите на кнопку Clear.
-
Добавьте следующую строку кода:
Private Sub ClearButton_Click() Call UserForm_Initialize End Sub
Объяснение: это строка кода вызывает Sub UserForm_Initialize при нажатии на кнопку Clear.
-
Дважды нажмите на кнопку Отмена.
-
Добавьте следующую строку кода:
Private Sub CancelButton_Click() Unload Me End Sub
Объяснение: Этот код строки закрывает UserForm при нажатии на кнопку Отмена.
Тест пользовательской формы
Закройте редактор Visual Basic, введите метки, показанные ниже в строке 1 и проверить UserForm.
Результат: