В этой главе вы узнаете, как создать Excel VBA UserForm. UserForm мы собираемся создать выглядит следующим образом:

Excel VBA Userform

Добавление элементов управления

Чтобы добавить элементы управления в UserForm, выполните следующие действия.

  1. Откройте ссылка: / VBA-Create-A-макро # зрительно-Basic-редактор [Visual Basic Editor]. Если проводник проекта не отображается, нажмите кнопку Просмотр, Project Explorer.

  2. Нажмите кнопку Вставить, UserForm. Если панель инструментов не появляется автоматически, нажмите кнопку View, Toolbox. Экран должен быть установлен, как показано ниже.

Userform Screen Setup in Excel VBA

  1. Добавьте элементы управления, перечисленные в таблице ниже. После того, как это было закончено, результат должен быть согласован с изображением UserForm, показанным ранее. Например, создать элемент управления для ввода текста, щелкнув на TextBox из панели инструментов. Далее, вы можете перетащить текстовое поле на UserForm. Когда вы приедете на раме автомобиля, не забудьте сделать этот кадр первым, прежде чем разместить две дополнительные кнопки в нем.

  2. Изменение названия и подписи элементов управления в соответствии с таблицей ниже. Имена используются в коде 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, этот подпункт будет автоматически выполняться.

  1. Откройте ссылка: / VBA-Create-A-макро # зрительно-Basic-редактор [Visual Basic Editor].

  2. В окне Project Explorer, щелкните правой кнопкой мыши на DinnerPlannerUserForm, а затем нажмите кнопку Просмотр кода.

  3. Выберите UserForm из списка левого выпадающего списка. Выберите Initialize справа в раскрывающемся списке.

  4. Добавьте следующие строки кода:

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.

  1. Откройте ссылка: / VBA-Create-A-макро # зрительно-Basic-редактор [Visual Basic Editor].

  2. В окне Project Explorer дважды щелкните на DinnerPlannerUserForm.

  3. Дважды нажмите на кнопку Деньги спина.

  4. Добавьте следующую строку кода:

Private Sub MoneySpinButton_Change()

MoneyTextBox.Text = MoneySpinButton.Value

End Sub

Объяснение: это строка кода обновляет текстовое поле, когда вы используете кнопку отжима.

  1. Дважды нажмите на кнопку OK.

  2. Добавьте следующие строки кода:

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.

  1. Дважды нажмите на кнопку Clear.

  2. Добавьте следующую строку кода:

Private Sub ClearButton_Click()

Call UserForm_Initialize

End Sub

Объяснение: это строка кода вызывает Sub UserForm_Initialize при нажатии на кнопку Clear.

  1. Дважды нажмите на кнопку Отмена.

  2. Добавьте следующую строку кода:

Private Sub CancelButton_Click()

Unload Me

End Sub

Объяснение: Этот код строки закрывает UserForm при нажатии на кнопку Отмена.

Тест пользовательской формы

Закройте редактор Visual Basic, введите метки, показанные ниже в строке 1 и проверить UserForm.

Результат:

Test the Userform