Visual Basic — отличный язык для автоматизации повторяющихся задач в Excel. Представьте себе, что вы поднимаете свою автоматизацию на ступеньку выше, создавая высокофункциональные пользовательские формы, которые также выглядят аккуратно для конечных пользователей.

Пользовательские формы в VBA представляют собой чистый холст; вы можете создавать и организовывать формы в соответствии со своими потребностями в любой момент времени.

В этом руководстве вы научитесь создавать форму ввода данных для учащихся, которая собирает соответствующую информацию на связанных листах Excel.

Создание пользовательской формы с помощью Excel VBA

Откройте новую книгу Excel и выполните несколько предварительных шагов, прежде чем приступить к созданию формы ввода данных.

Сохраните книгу под нужным именем; не забудьте изменить тип файла на Книга Excel с поддержкой макросов.

Связанный:Веб-сайты и блоги для изучения советов и рекомендаций по Excel

Добавьте в эту книгу два листа со следующими именами:

  1. Лист1: Дома
  2. Лист2:База данных студентов
instagram viewer

Не стесняйтесь изменять эти имена в соответствии с вашими требованиями.

в Дома лист, добавьте кнопку для управления макросом пользовательской формы. Перейти к Разработчик вкладку и нажмите кнопку Кнопка вариант из Вставлять выпадающий список. Поместите кнопку в любом месте листа.

После того, как вы разместили кнопку, переименуйте ее. Щелкните правой кнопкой мыши на нем и нажмите на Новый чтобы назначить новый макрос для отображения формы.

Введите следующий код в окно редактора:

Подкнопка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

Объединение данных из более чем одного листа Excel в одной книге — настоящая проблема... пока вы не используете макросы VBA.

Читать далее

ДелитьсяТвитнутьЭл. адрес
Похожие темы
  • Программирование
  • Производительность
  • Программирование на Visual Basic
  • Майкрософт Эксель
Об авторе
Гаурав Сиял (опубликовано 50 статей)

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

Другие работы Гаурава Сиала

Подписывайтесь на нашу новостную рассылку

Подпишитесь на нашу рассылку технических советов, обзоров, бесплатных электронных книг и эксклюзивных предложений!

Нажмите здесь, чтобы подписаться