Найти тему

📌 VBA Excel: как получить данные от пользователя. Функция InputBox VS UserForm (практическое применение и возможности)

Оглавление

В предыдущих обзорах мы рассказывали, что взаимодействовать с пользователем можно посредством пользовательской формы UserForm.

Но это лишь один из способов 😉

Альтернативным решением, которое позволит получить данные от пользователя, является встроенная функция встроенная VBA - InputBox.

VBA Excel: как получить данные от пользователя. Функция InputBox VS UserForm (практическое применение и возможности)
VBA Excel: как получить данные от пользователя. Функция InputBox VS UserForm (практическое применение и возможности)

📢 Скачать исходник с примером кода вы можете в конце статьи 🔽

-3

▶️ InputBox

- встроенная функция VBA, которая предоставляет пользователю окно для ввода текста или числовых данных.

Она может быть использована для запроса информации, например, имени, пароля, числа или любой другой информации.

🔷 Синтаксис функции включает следующие аргументы:

Аргументы функции InputBox
Аргументы функции InputBox

▶️ Функция InputBox VS UserForm

InputBox и UserForm - два различных способа взаимодействия с пользователем, и каждый из них имеет свои преимущества и недостатки, в зависимости от конкретных задач и контекста.

Выбор между InputBox и UserForm зависит от конкретной задачи и требований проекта.

➡️ UserForm имеет свои преимущества, такие как более сложные пользовательские интерфейсы, более широкие возможности настройки, а также более гибкую логику взаимодействия с пользователем.

➡️ В ряде преимуществ InputBox по сравнению с UserForm можно отметить следующие:

  • Простота использования: InputBox гораздо проще в использовании и настройке по сравнению с созданием и настройкой UserForm. Создать и использовать InputBox можно всего за несколько строк кода, в то время как создание и настройка UserForm может потребовать гораздо больше усилий.
  • Скорость разработки: Если требуется быстро вставить простой ввод данных или запросить у пользователя значение, то InputBox - это быстрый и удобный способ сделать это без необходимости создавать сложный пользовательский интерфейс.
  • Простота для пользователя: InputBox предоставляет пользователю минимум интерфейса, что может быть полезным, если нужно получить быстрый и простой ответ от пользователя. В отличие от UserForm, который может содержать множество элементов управления, InputBox предоставляет только одно поле ввода и кнопки "OK" и "Отмена".
  • Меньше места: В ряде случаев InputBox занимает гораздо меньше места, чем UserForm, что особенно полезно если пространство для отображения данных ограничено.
  • Простая проверка ошибок: InputBox может быть легко использован для простой проверки пользовательского ввода, например, для обнаружения неправильных форматов данных. В UserForm это требует более сложной логики и дополнительных элементов управления.

▶️ Как использовать InputBox

Чтобы понять принцип работы функции приведем простой пример:

-5

В этом примере InputBox запрашивает у пользователя ввод его имени:

-6

А затем отображает приветственное сообщение с использованием введенного имени:

-7

Данный пример демонстрирует простое взаимодействие с пользователем, запрашивая информацию и получая ввод.

Но на этом возможности InputBox не заканчиваются 😉.

▶️ Практическое применение и возможности

InputBox может быть настроен на различные способы взаимодействия.

🔘 Заголовок и текст: можно задать заголовок окна и текст, который появится рядом с полем ввода. Это помогает пользователю понять, какую информацию от него ожидают.

Например,

-8

В этом примере InputBox будет отображаться с заголовком "Ввод имени" и текстом "Введите ваше имя:"

-9

После подтверждения ввода (кнопка "OK"), результат будет отображен в сообщении MsgBox:

-10

Если пользователь оставит поле ввода пустым или нажмет "Отмена", то будет отображено соответствующее сообщение:

-11

🔘 Значение по умолчанию: можно предоставить значение по умолчанию, которое будет отображаться в поле ввода.

Пользователь может его оставить, изменить или оставить поле пустым:

-12

В этом примере InputBox будет отображаться с заголовком "Ввод даты" и значением по умолчанию в формате текущей даты (например, "10.09.2023"):

-13

Аналогично предыдущему примеру добавлена проверка:

  • введена корректная дата: результат будет отображен в сообщении MsgBox.
  • поле ввода оставлено пустым: будет отображено сообщение о том, что поле было оставлено пустым.
  • введено некорректное значение даты: будет отображено сообщение о неправильном вводе:
-14

🔘 Тип данных и проверка ввода (обработка ошибок):

Чтобы гарантировать, что данные, введенные пользователем, соответствуют требованиям можно внедрить проверки на ввод и обработать ошибки, если они возникают:

Например, проверить, является ли введенное значение числом:

-15

В данном случае сначала запрашивается ввод значения, а затем осуществляется проверка, является ли введенное значение числом с помощью функции IsNumeric.

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

🔘 Условие (отмена и возврат): Используя условие с помощью оператора If можно определить предустановленное значение в случае если пользователь нажимает "Отмена" или оставляет поле пустым,

например:

-16

В этом примере, если пользователь нажимает "Отмена" или оставляет поле ввода пустым, то InputBox вернет 0 (ноль):

-17

▶️ Расширенные варианты использования

В дополнение к простым запросам InputBox можно использовать для создания более сложных интерфейсов:

🔘 Множественный ввод: Вы можете использовать несколько InputBox для запроса разных значений, например:

-18

В данном случае макрос требует ввода числового значения для стоимости товара и будет проверять, является ли введенное значение числом.

  • Если значение не является числом или пользователь нажимает "Отмена", будет выведено соответствующее сообщение об ошибке:
-19
  • Если значения корректны, они будут записан в соответствующие строки столбцов A и B:
-20

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

Например, с помощью InputBox запрашивается пароль. Если пароль верный, то открывается пользовательская форма UserForm:

Код следует добавить в общий модуль книги
Код следует добавить в общий модуль книги

Для целей данного примера сначала создайте пользовательскую форму (UserForm):

Теперь, когда вы открываете книгу Excel, макрос будет запрашивать пароль через InputBox:

-22
  • Если пароль верный, то открывается пользовательская форма UserForm1:
-23
  • Если пароль не верный, переход на форму будет не доступен:
-24
  • В случае если пользователь нажал на кнопку "Отмена" или оставил поле пустым будет выведено сообщение об отмене авторизации:
-25

В заключение...

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

Но это тема уже следующего обзора 😉.

-26
Наша команда очень заинтересована в создании качественного и полезного контента. Поэтому, если Вам понравился этот урок, не забудьте поблагодарить автора лайком 👍. Если у Вас есть вопросы или своё решение, не стесняйтесь оставить комментарий 💬. Нужно решение для другой проблемы? Пожалуйста, напишите свой вопрос в комментариях 💬, и мы обязательно рассмотрим его в ближайшей теме обзора. Мы ценим Вашу обратную связь 💝, так как это помогает нам оценить, насколько данный материал был полезен для Вас
Наша команда очень заинтересована в создании качественного и полезного контента. Поэтому, если Вам понравился этот урок, не забудьте поблагодарить автора лайком 👍. Если у Вас есть вопросы или своё решение, не стесняйтесь оставить комментарий 💬. Нужно решение для другой проблемы? Пожалуйста, напишите свой вопрос в комментариях 💬, и мы обязательно рассмотрим его в ближайшей теме обзора. Мы ценим Вашу обратную связь 💝, так как это помогает нам оценить, насколько данный материал был полезен для Вас

📍 Рекомендуемые статьи 🔽

СКАЧАТЬ ПРИМЕР