Найти в Дзене
VBA Excel с нуля

VBA Excel № 137. Функция InputBox.

Скриншот с моего ноутбука
Скриншот с моего ноутбука

Для создания окна ввода данных в VBA можно использовать функцию InputBox или метод InputBox объекта Application. Функция InputBox имеет следующий синтаксис:

InputBox(Запрос [, Заголовок] [, По умолчанию] [, xpos] [, ypos] [, Справка, Раздел])

Где:

  • Запрос: текст, отображаемый в окне ввода (обязательный параметр).
  • Заголовок: заголовок окна ввода (необязательный параметр).
  • По умолчанию: значение, отображаемое по умолчанию в окне ввода (необязательный параметр).
  • xpos, ypos: координаты левого верхнего угла окна ввода на экране (необязательные параметры).
  • Справка, Раздел: файл и раздел в справочной системе (необязательные параметры).

Функция InputBox запрашивает у пользователя единственное значение и всегда возвращает строку, которую при необходимости нужно преобразовать в числовое значение.

Текст, отображаемый в окне ввода, может содержать до 1024 символов. Можно также указать заголовок окна, значение по умолчанию и координаты его расположения на экране.

Пример использования функции InputBox:

Скриншот с моего ноутбука
Скриншот с моего ноутбука

📌 Скачать файл пример с тремя макросами, можно в конце статьи.

Код выглядит следующим образом:

Скриншот с моего ноутбука
Скриншот с моего ноутбука

В данном примере функция InputBox вызывается в цикле Do Until, что позволяет удостовериться, что данные введены в окно. Если пользователь нажмет на кнопку "Cancel" или не введет текст, переменная Имя будет содержать пустую строку, и окно ввода данных появится повторно. Затем производится попытка получить только имя пользователя путем поиска первого символа пробела (с помощью функции InStr). Также используется функция Left для извлечения всех символов слева от пробела. Если пробел не найден, используется весь введенный текст в качестве имени.

Следующий пример (см. скриншот ниже) иллюстрирует применение функции VBA InputBox для запроса у пользователя пропущенного слова в стихотворении. Текст запроса формируется из стихотворения в коде и отображается в диалоговом окне InputBox. Если пользователь введет правильное слово, программа выведет сообщение "Верно", в противном случае - "Неверно". Обратите внимание, что текст запроса может содержать специальные символы, такие как символ новой строки (Chr(10)), для форматирования текста.

Скриншот с моего ноутбука
Скриншот с моего ноутбука

Этот код демонстрирует использование именованных аргументов при вызове функции InputBox для улучшения читаемости кода.

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

Скриншот с моего ноутбука
Скриншот с моего ноутбука

В следующем примере кода (см. скриншот ниже) используется функция InputBox для запроса числового значения. С помощью функции IsNumber устанавливается, будет ли строка интерпретироваться в виде числового значения. Если это так, то отображается введенное пользователем значение, умноженное на 12.

Скриншот с моего ноутбука
Скриншот с моего ноутбука
Скриншот с моего ноутбука
Скриншот с моего ноутбука

Как всегда, на кнопки я назначил макросы.

Скриншот с моего ноутбука
Скриншот с моего ноутбука

СКАЧАТЬ ФАЙЛ ПРИМЕР