Visual Basic — отличный язык для автоматизации повторяющихся задач в Excel. Представьте себе, что вы поднимаете свою автоматизацию на ступеньку выше, создавая высокофункциональные пользовательские формы, которые также выглядят аккуратно для конечных пользователей.
Пользовательские формы в VBA представляют собой чистый холст; вы можете создавать и организовывать формы в соответствии со своими потребностями в любой момент времени.
В этом руководстве вы научитесь создавать форму ввода данных для учащихся, которая собирает соответствующую информацию на связанных листах Excel.
Создание пользовательской формы с помощью Excel VBA
Откройте новую книгу Excel и выполните несколько предварительных шагов, прежде чем приступить к созданию формы ввода данных.
Сохраните книгу под нужным именем; не забудьте изменить тип файла на Книга Excel с поддержкой макросов.
Связанный:Веб-сайты и блоги для изучения советов и рекомендаций по Excel
Добавьте в эту книгу два листа со следующими именами:
- Лист1: Дома
- Лист2:База данных студентов
Не стесняйтесь изменять эти имена в соответствии с вашими требованиями.
в Дома лист, добавьте кнопку для управления макросом пользовательской формы. Перейти к Разработчик вкладку и нажмите кнопку Кнопка вариант из Вставлять выпадающий список. Поместите кнопку в любом месте листа.
После того, как вы разместили кнопку, переименуйте ее. Щелкните правой кнопкой мыши на нем и нажмите на Новый чтобы назначить новый макрос для отображения формы.
Введите следующий код в окно редактора:
Подкнопка1_Click()
Пользовательская форма. Показывать
Конец сабвуфера
Однажды Дома а также Студенческая база данных листы готовы, пришло время разработать пользовательскую форму. Перейдите к Разработчик вкладку и нажмите на Visual Basic чтобы открыть Редактор. Кроме того, вы можете нажать ALT+F11 чтобы открыть окно редактора.
Нажать на Вставлять вкладку и выберите Пользовательская форма.
Пустая пользовательская форма готова к использованию; вместе с формой открывается соответствующий набор инструментов, в котором есть все необходимые инструменты для разработки макета.
На панели инструментов выберите Рамка вариант. Перетащите это в форму пользователя и измените размер.
в (имя) вариант, вы можете изменить имя фрейма. Чтобы отобразить имя на интерфейсе, вы можете изменить имя в Подпись столбец.
Далее выберите Этикетка на панели инструментов и вставьте две метки в эту рамку. Переименуйте первый как Номер заявления а второй как Студенческий билет.
Применяется та же логика переименования; изменить имена через Подпись вариант в рамках Характеристики окно. Убедитесь, что вы выбрали соответствующий ярлык перед изменением его имени.
Затем вставьте два текстовых поля рядом с полями меток. Они будут использоваться для захвата ввода пользователя. Измените имена двух текстовых полей с помощью (Имя) колонка внутри Характеристики окно. Имена следующие:
- Текстовое поле1: txtApplicationNo
- Текстовое поле2: txtStudentID
Проектирование рамки сведений об учащемся
Вставьте вертикальную рамку и добавьте 10 меток и 10 текстовых полей. Переименуйте каждый из них следующим образом:
- Этикетка3: Имя
- Этикетка4: Возраст
- Метка5: Адрес
- Этикетка6: Телефон
- Этикетка7: Город
- Этикетка8: Страна
- Этикетка9: Дата рождения
- Этикетка10: Почтовый Индекс
- Этикетка11: Национальность
- Этикетка12: Пол
Вставьте соответствующие текстовые поля рядом с этими метками; вставьте два (или больше) кнопка выбора поля из панели инструментов пользовательской формы рядом с Пол этикетка. Переименуйте их Мужчина а также Женский (вместе с Custom) соответственно.
Разработка рамки сведений о курсе
Добавьте еще одну вертикальную рамку и вставьте шесть меток и шесть текстовых полей, соответствующих каждой метке. Переименуйте ярлыки следующим образом:
- Этикетка13: Название курса
- Этикетка14: Идентификатор курса
- Этикетка15: Дата начала регистрации
- Этикетка16: Дата окончания регистрации
- Этикетка17: Длительность курса
- Этикетка18: отделение
Связанный: 4 ошибки, которых следует избегать при программировании макросов Excel с помощью VBA
Разработка фрейма сведений о платеже
Вставьте новую рамку; добавьте новую метку и переименуйте ее «Хотите обновить детали платежа?» Вставьте два кнопки опций; переименовать их да а также Нет.
Аналогичным образом добавьте новый фрейм, содержащий две дополнительные метки и два поля со списком. Переименуйте ярлыки следующим образом:
- Этикетка19: Платеж получен
- Этикетка20: Режим оплаты
Проектирование области навигации
В финальном кадре добавьте три кнопки из панели инструментов, которые будут содержать код для выполнения форм.
Переименуйте кнопки следующим образом:
- Кнопка1: Сохранить детали
- Кнопка2: Наглядная форма
- Кнопка3: Выход
Написание кода автоматизированной формы: кнопка «Сохранить детали»
Дважды щелкните на Сохранить детали кнопка. В следующем модуле вставьте следующий код:
Частная подпрограмма CommandButton2_Click()
‘объявить переменные, используемые во всех кодах
Dim sht As Worksheet, sht1 As Worksheet, lastrow As Long'Добавьте проверки, чтобы проверить, вводятся ли символьные значения в числовые поля.
Если VBA.IsNumeric (значение txtApplicationNo.) = False Тогда
MsgBox "В номере заявки допускаются только числовые значения", vbCritical
Выйти из подпрограммы
Конец, еслиЕсли VBA.IsNumeric (txtStudentID.Value) = False Тогда
MsgBox "В идентификаторе студента допускаются только числовые значения", vbCritical
Выйти из подпрограммы
Конец, еслиЕсли VBA.IsNumeric (txtAge. Значение) = Ложь Тогда
MsgBox "В возрасте принимаются только числовые значения", vbCritical
Выйти из подпрограммы
Конец, еслиЕсли VBA.IsNumeric (txtPhone. Значение) = Ложь Тогда
MsgBox "В номере телефона допускаются только числовые значения", vbCritical
Выйти из подпрограммы
Конец, еслиЕсли VBA.IsNumeric(Me.txtCourseID.Value) = False Тогда
MsgBox «В идентификаторе курса допустимы только числовые значения», vbCritical
Выйти из подпрограммы
Конец, если'связать поля текстового поля с базовыми листами, чтобы создать скользящую базу данных
Установите sht = ThisWorkbook. Листы ("База данных учащихся")'вычислить последнюю заполненную строку в обоих листах
последний ряд = шт. Диапазон("a" & Строки. Количество).Конец (xlUp).Строка + 1
'вставить значения каждого текстового поля в соответствующие ячейки листа
С шт
.Range("a" & lastrow).Value = txtApplicationNo. Стоимость
.Range("b" & lastrow).Value = txtStudentID.Value
.Range("c" & lastrow).Value = txtName. Стоимость
.Range("d" & lastrow).Value = txtAge. Стоимость
.Range("e" и lastrow).Value = txtDOB.Value
.Range("g" & lastrow).Value = txtAddress. Стоимость
.Range("h" & lastrow).Value = txtPhone. Стоимость
.Range("i" и последняя строка).Value = txtCity. Стоимость
.Range("j" и последняя строка).Value = txtCountry. Стоимость
.Range("k" и последняя строка).Value = txtZip. Стоимость
.Range("l" & lastrow).Value = txtNationality. Стоимость
.Range("m" & lastrow).Value = txtCourse. Стоимость
.Range("n" & lastrow).Value = txtCourseID.Value
.Range("o" & lastrow).Value = txtenrollmentstart. Стоимость
.Range("p" & lastrow).Value = txtenrollmentend. Стоимость
.Range("q" & lastrow).Value = txtcourseduration. Стоимость
.Range("r" & lastrow).Value = txtDept. СтоимостьКонец с
шт. Активировать'определить пол в соответствии с вводом пользователя
Если выбратьMale. Значение = True Тогда шт. Range("g" & lastrow).Value = "Мужской"
Если выбратьFemale. Значение = True Тогда шт. Range("g" & lastrow).Value = "Женщина"
'Отобразить окно сообщения, если пользователь выбирает переключатель ДаЕсли выбратьДа. Значение = Истина Тогда
MsgBox "Пожалуйста, выберите детали платежа ниже"
Еще:
Выйти из подпрограммыКонец, если
Конец сабвуфера
Если вы не уверены, что означают части или какие-либо части кода, не волнуйтесь. Мы подробно объясним это в следующем разделе.
Объяснение кода автоматизированной формы
Текстовые поля будут содержать как текстовые, так и числовые значения, поэтому очень важно ограничить ввод данных пользователем. То Номер заявления, Студенческий билет, Возраст, Телефон, Идентификатор курса, а также Длительность курса должны содержать только цифры, а остальные будут содержать текст.
Использование ЕСЛИ оператор, код вызывает всплывающие окна с ошибкой, если пользователь вводит символ или текстовое значение в любом из числовых полей.
Поскольку проверка ошибок уже выполнена, вам необходимо связать текстовые поля с ячейками листа.
То последний ряд переменные будут вычислять последнюю заполненную строку и сохранять в них значения для динамического использования.
Наконец, значения из текстовых полей вставляются в связанный лист Excel.
Очистить коды формы и кнопки выхода
в Чисто кнопку, вам нужно написать код, чтобы очистить существующие значения из пользовательской формы. Это можно сделать следующим образом:
Со мной
.txtПриложение №. Значение = ""
.txtStudentID.Value = ""
..txtName. Значение = ""
.txtAge. Значение = ""
.txtАдрес. Значение = ""
.txtТелефон. Значение = ""
.txtCity. Значение = ""
.txtСтрана. Значение = ""
.txtDOB.Значение = ""
.txtZip. Значение = ""
.txtНациональность. Значение = ""
.txtКурс. Значение = ""
.txtCourseID.Value = ""
.txtenrollmentstart. Значение = ""
.txtenrollmentend. Значение = ""
.txt продолжительность курса. Значение = ""
.txtОтдел. Значение = ""
.cmbPaymentMode. Значение = ""
.cmbПлатеж. Значение = ""
.optFemale. Значение = Ложь
.optMale. Значение = Ложь
.оптДа. Значение = Ложь
.optNo. Значение = Ложь
Конец с
в выход кнопку, введите следующий код, чтобы закрыть форму пользователя.
Частная подпрограмма CommandButton5_Click()
Разгрузи меня
Конец сабвуфера
В качестве последнего шага вам нужно ввести несколько заключительных фрагментов кода, чтобы создать раскрывающиеся значения для полей со списком (внутри платежных фреймов).
Частная подпрограмма UserForm_Activate()
С cmbPayment
.Прозрачный
.Добавить элемент ""
.AddItem "Да"
.AddItem "Нет"
Конец с
С cmbPaymentMode
.Прозрачный
.Добавить элемент ""
.AddItem "Наличные"
.AddItem "Карта"
.AddItem "Проверить"
Конец с
Конец сабвуфера
Автоматизация VBA упрощает работу
VBA — это многогранный язык, который служит многим целям. Пользовательские формы — это только один из аспектов VBA — существует множество других применений, таких как объединение книг и рабочих листов, объединение нескольких листов Excel и другие удобные способы автоматизации.
Независимо от цели автоматизации, VBA справится с этой задачей. Если вы продолжаете учиться и практиковаться, нет такого аспекта вашего рабочего процесса, который вы не могли бы улучшить.
Объединение данных из более чем одного листа Excel в одной книге — настоящая проблема... пока вы не используете макросы VBA.
Читать далее
- Программирование
- Производительность
- Программирование на Visual Basic
- Майкрософт Эксель

Гаурав Сиял имеет двухлетний опыт написания текстов для ряда компаний, занимающихся цифровым маркетингом, и документов по жизненному циклу программного обеспечения.
Подписывайтесь на нашу новостную рассылку
Подпишитесь на нашу рассылку технических советов, обзоров, бесплатных электронных книг и эксклюзивных предложений!
Нажмите здесь, чтобы подписаться