Форма пользователя — это настраиваемое диалоговое окно, которое делает ввод пользовательских данных более управляемым и более простым в использовании для пользователя. В этой главе вы научитесь разрабатывать простую форму и добавлять данные в Excel.
Шаг 1 — Перейдите к окну VBA, нажав Alt + F11 и перейдите к меню «Вставить» и выберите «Форма пользователя». После выбора форма пользователя отображается, как показано на следующем снимке экрана.
Шаг 2 — Разработка форм с использованием заданных элементов управления.
Шаг 3 — После добавления каждого элемента управления, элементы управления должны быть названы. Заголовок соответствует тому, что отображается в форме, а имя соответствует логическому имени, которое будет появляться при написании кода VBA для этого элемента.
Шаг 4 — Ниже приведены имена против каждого из добавленных элементов управления.
контроль | Логическое имя | титр |
---|---|---|
От | frmempform | Форма сотрудника |
Идентификационная этикетка сотрудника | EmpID | ID сотрудника |
Имя Label Box | имя | Имя |
фамилия этикетка | Фамилия | Фамилия |
Dob Label Box | дата рождения | Дата рождения |
Mailid Label Box | почтовый идентификатор | Email ID |
Этикетка для паспорта | Держатель паспорта | Держатель паспорта |
Текстовое поле Emp ID | txtempid | Непригодный |
Имя Текстовое поле | txtfirstname | Непригодный |
Фамилия Текстовое поле | txtlastname | Непригодный |
Текстовое поле идентификатора электронной почты | txtemailid | Непригодный |
Поле со списком даты | cmbdate | Непригодный |
Поле со списком месяцев | cmbmonth | Непригодный |
Поле со списком | cmbyear | Непригодный |
Да радио кнопка | radioyes | да |
Нет радио кнопки | radiono | нет |
Кнопка «Отправить» | btnsubmit | Отправить |
Кнопка Отмена | btncancel | отменить |
Шаг 5 — Добавьте код для события загрузки формы, выполнив щелчок правой кнопкой мыши на форме и выбрав «Просмотреть код».
Шаг 6 — Выберите «Userform» из выпадающего списка объектов и выберите метод «Initialize», как показано на следующем снимке экрана.
Шаг 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
Шаг 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
Шаг 9 — Добавьте метод, чтобы закрыть форму, когда пользователь нажимает кнопку Отмена.
Private Sub btncancel_Click() Unload Me End Sub
Шаг 10 — Заполните форму, нажав кнопку «Выполнить». Введите значения в форму и нажмите кнопку «Отправить». Автоматически значения будут перетекать в лист, как показано на следующем снимке экрана.