В предыдущих обзорах мы рассказывали, что взаимодействовать с пользователем можно посредством пользовательской формы UserForm.
Но это лишь один из способов 😉
Альтернативным решением, которое позволит получить данные от пользователя, является встроенная функция встроенная VBA - InputBox.
📢 Скачать исходник с примером кода вы можете в конце статьи 🔽
▶️ InputBox
- встроенная функция VBA, которая предоставляет пользователю окно для ввода текста или числовых данных.
Она может быть использована для запроса информации, например, имени, пароля, числа или любой другой информации.
🔷 Синтаксис функции включает следующие аргументы:
▶️ Функция InputBox VS UserForm
InputBox и UserForm - два различных способа взаимодействия с пользователем, и каждый из них имеет свои преимущества и недостатки, в зависимости от конкретных задач и контекста.
Выбор между InputBox и UserForm зависит от конкретной задачи и требований проекта.
➡️ UserForm имеет свои преимущества, такие как более сложные пользовательские интерфейсы, более широкие возможности настройки, а также более гибкую логику взаимодействия с пользователем.
➡️ В ряде преимуществ InputBox по сравнению с UserForm можно отметить следующие:
- Простота использования: InputBox гораздо проще в использовании и настройке по сравнению с созданием и настройкой UserForm. Создать и использовать InputBox можно всего за несколько строк кода, в то время как создание и настройка UserForm может потребовать гораздо больше усилий.
- Скорость разработки: Если требуется быстро вставить простой ввод данных или запросить у пользователя значение, то InputBox - это быстрый и удобный способ сделать это без необходимости создавать сложный пользовательский интерфейс.
- Простота для пользователя: InputBox предоставляет пользователю минимум интерфейса, что может быть полезным, если нужно получить быстрый и простой ответ от пользователя. В отличие от UserForm, который может содержать множество элементов управления, InputBox предоставляет только одно поле ввода и кнопки "OK" и "Отмена".
- Меньше места: В ряде случаев InputBox занимает гораздо меньше места, чем UserForm, что особенно полезно если пространство для отображения данных ограничено.
- Простая проверка ошибок: InputBox может быть легко использован для простой проверки пользовательского ввода, например, для обнаружения неправильных форматов данных. В UserForm это требует более сложной логики и дополнительных элементов управления.
▶️ Как использовать InputBox
Чтобы понять принцип работы функции приведем простой пример:
В этом примере InputBox запрашивает у пользователя ввод его имени:
А затем отображает приветственное сообщение с использованием введенного имени:
Данный пример демонстрирует простое взаимодействие с пользователем, запрашивая информацию и получая ввод.
Но на этом возможности InputBox не заканчиваются 😉.
▶️ Практическое применение и возможности
InputBox может быть настроен на различные способы взаимодействия.
🔘 Заголовок и текст: можно задать заголовок окна и текст, который появится рядом с полем ввода. Это помогает пользователю понять, какую информацию от него ожидают.
Например,
В этом примере InputBox будет отображаться с заголовком "Ввод имени" и текстом "Введите ваше имя:"
После подтверждения ввода (кнопка "OK"), результат будет отображен в сообщении MsgBox:
Если пользователь оставит поле ввода пустым или нажмет "Отмена", то будет отображено соответствующее сообщение:
🔘 Значение по умолчанию: можно предоставить значение по умолчанию, которое будет отображаться в поле ввода.
Пользователь может его оставить, изменить или оставить поле пустым:
В этом примере InputBox будет отображаться с заголовком "Ввод даты" и значением по умолчанию в формате текущей даты (например, "10.09.2023"):
Аналогично предыдущему примеру добавлена проверка:
- введена корректная дата: результат будет отображен в сообщении MsgBox.
- поле ввода оставлено пустым: будет отображено сообщение о том, что поле было оставлено пустым.
- введено некорректное значение даты: будет отображено сообщение о неправильном вводе:
🔘 Тип данных и проверка ввода (обработка ошибок):
Чтобы гарантировать, что данные, введенные пользователем, соответствуют требованиям можно внедрить проверки на ввод и обработать ошибки, если они возникают:
Например, проверить, является ли введенное значение числом:
В данном случае сначала запрашивается ввод значения, а затем осуществляется проверка, является ли введенное значение числом с помощью функции IsNumeric.
Применив такой подход можно адаптировать код для работы с различными типами данных в зависимости от потребностей.
🔘 Условие (отмена и возврат): Используя условие с помощью оператора If можно определить предустановленное значение в случае если пользователь нажимает "Отмена" или оставляет поле пустым,
например:
В этом примере, если пользователь нажимает "Отмена" или оставляет поле ввода пустым, то InputBox вернет 0 (ноль):
▶️ Расширенные варианты использования
В дополнение к простым запросам InputBox можно использовать для создания более сложных интерфейсов:
🔘 Множественный ввод: Вы можете использовать несколько InputBox для запроса разных значений, например:
В данном случае макрос требует ввода числового значения для стоимости товара и будет проверять, является ли введенное значение числом.
- Если значение не является числом или пользователь нажимает "Отмена", будет выведено соответствующее сообщение об ошибке:
- Если значения корректны, они будут записан в соответствующие строки столбцов A и B:
🔘 Пользовательские формы: InputBox можно использовать в сочетании с пользовательскими формами, созданными с помощью VBA, для создания более сложных и интерактивных интерфейсов.
Например, с помощью InputBox запрашивается пароль. Если пароль верный, то открывается пользовательская форма UserForm:
Для целей данного примера сначала создайте пользовательскую форму (UserForm):
Теперь, когда вы открываете книгу Excel, макрос будет запрашивать пароль через InputBox:
- Если пароль верный, то открывается пользовательская форма UserForm1:
- Если пароль не верный, переход на форму будет не доступен:
- В случае если пользователь нажал на кнопку "Отмена" или оставил поле пустым будет выведено сообщение об отмене авторизации:
В заключение...
Несмотря на многообразие рассмотренных возможностей следует отметить, что для создания диалоговых окон средствами VBA применим также метод InputBox, который в сравнении с функцией InputBox обладает рядом преимуществ.
Но это тема уже следующего обзора 😉.
📍 Рекомендуемые статьи 🔽