VBA - пользовательские формы
А User Form- это настраиваемое диалоговое окно, которое делает ввод данных пользователя более управляемым и более простым в использовании для пользователя. В этой главе вы научитесь создавать простую форму и добавлять данные в Excel.
Step 1- Перейдите в окно VBA, нажав Alt + F11, перейдите в меню «Вставить» и выберите «Форма пользователя». После выбора отображается форма пользователя, как показано на следующем снимке экрана.
Step 2 - Создавайте формы, используя данные элементы управления.
Step 3- После добавления каждого элемента управления необходимо дать ему имя. Заголовок соответствует тому, что отображается в форме, а имя соответствует логическому имени, которое будет отображаться при написании кода VBA для этого элемента.
Step 4 - Ниже приведены имена для каждого из добавленных элементов управления.
Контроль | Логическое имя | Заголовок |
---|---|---|
Из | frmempform | Форма сотрудника |
Поле для ярлыка идентификатора сотрудника | эмпид | ID сотрудника |
Поле с ярлыком имени | Имя | Имя |
поле с меткой фамилии | фамилия | Фамилия |
dob Label Box | доб | Дата рождения |
mailid Label Box | почтовый идентификатор | Электронный идентификатор |
Коробка с этикеткой для паспорта | Владелец паспорта | Владелец паспорта |
Текстовое поле Emp ID | txtempid | Непригодный |
Текстовое поле имени | txtfirstname | Непригодный |
Текстовое поле фамилии | txtlastname | Непригодный |
Текстовое поле идентификатора электронной почты | txtemailid | Непригодный |
Поле со списком даты | cmbdate | Непригодный |
Поле со списком "Месяц" | куб.мес. | Непригодный |
Поле со списком "Год" | cmbyear | Непригодный |
Да Радиокнопка | радио да | да |
Нет радиокнопки | радионо | Нет |
Отправить кнопку | btnsubmit | Разместить |
Кнопка отмены | btncancel | отменить |
Step 5 - Добавьте код для события загрузки формы, щелкнув форму правой кнопкой мыши и выбрав «Просмотреть код».
Step 6 - Выберите «Userform» из раскрывающегося списка объектов и выберите метод «Initialize», как показано на следующем снимке экрана.
Step 7 - После загрузки формы убедитесь, что текстовые поля очищены, раскрывающиеся поля заполнены, а переключатели сброшены.
Private Sub UserForm_Initialize()
'Empty Emp ID Text box and Set the Cursor
txtempid.Value = ""
txtempid.SetFocus
'Empty all other text box fields
txtfirstname.Value = ""
txtlastname.Value = ""
txtemailid.Value = ""
'Clear All Date of Birth Related Fields
cmbdate.Clear
cmbmonth.Clear
cmbyear.Clear
'Fill Date Drop Down box - Takes 1 to 31
With cmbdate
.AddItem "1"
.AddItem "2"
.AddItem "3"
.AddItem "4"
.AddItem "5"
.AddItem "6"
.AddItem "7"
.AddItem "8"
.AddItem "9"
.AddItem "10"
.AddItem "11"
.AddItem "12"
.AddItem "13"
.AddItem "14"
.AddItem "15"
.AddItem "16"
.AddItem "17"
.AddItem "18"
.AddItem "19"
.AddItem "20"
.AddItem "21"
.AddItem "22"
.AddItem "23"
.AddItem "24"
.AddItem "25"
.AddItem "26"
.AddItem "27"
.AddItem "28"
.AddItem "29"
.AddItem "30"
.AddItem "31"
End With
'Fill Month Drop Down box - Takes Jan to Dec
With cmbmonth
.AddItem "JAN"
.AddItem "FEB"
.AddItem "MAR"
.AddItem "APR"
.AddItem "MAY"
.AddItem "JUN"
.AddItem "JUL"
.AddItem "AUG"
.AddItem "SEP"
.AddItem "OCT"
.AddItem "NOV"
.AddItem "DEC"
End With
'Fill Year Drop Down box - Takes 1980 to 2014
With cmbyear
.AddItem "1980"
.AddItem "1981"
.AddItem "1982"
.AddItem "1983"
.AddItem "1984"
.AddItem "1985"
.AddItem "1986"
.AddItem "1987"
.AddItem "1988"
.AddItem "1989"
.AddItem "1990"
.AddItem "1991"
.AddItem "1992"
.AddItem "1993"
.AddItem "1994"
.AddItem "1995"
.AddItem "1996"
.AddItem "1997"
.AddItem "1998"
.AddItem "1999"
.AddItem "2000"
.AddItem "2001"
.AddItem "2002"
.AddItem "2003"
.AddItem "2004"
.AddItem "2005"
.AddItem "2006"
.AddItem "2007"
.AddItem "2008"
.AddItem "2009"
.AddItem "2010"
.AddItem "2011"
.AddItem "2012"
.AddItem "2013"
.AddItem "2014"
End With
'Reset Radio Button. Set it to False when form loads.
radioyes.Value = False
radiono.Value = False
End Sub
Step 8- Теперь добавьте код на кнопку «Отправить». После нажатия кнопки отправки пользователь сможет добавить значения в рабочий лист.
Private Sub btnsubmit_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 = txtempid.Value
Cells(emptyRow, 2).Value = txtfirstname.Value
Cells(emptyRow, 3).Value = txtlastname.Value
Cells(emptyRow, 4).Value = cmbdate.Value & "/" & cmbmonth.Value & "/" & cmbyear.Value
Cells(emptyRow, 5).Value = txtemailid.Value
If radioyes.Value = True Then
Cells(emptyRow, 6).Value = "Yes"
Else
Cells(emptyRow, 6).Value = "No"
End If
End Sub
Step 9 - Добавить метод закрытия формы, когда пользователь нажимает кнопку «Отмена».
Private Sub btncancel_Click()
Unload Me
End Sub
Step 10- Запустите форму, нажав кнопку «Выполнить». Введите значения в форму и нажмите кнопку «Отправить». Значения автоматически переместятся в рабочий лист, как показано на следующем снимке экрана.