Как использовать функцию InputBox VBA для выбора диапазона на лету в Excel

Исходный узел: 987115

Автоматизировать процесс выбора не составит труда, если вы полагаетесь на InputBox VBA в Microsoft Excel.

Черная женщина смотрит на электронные таблицы на экранах

Изображение: Андрей_Попов/Shutterstock

Часто вам потребуется, чтобы пользователи Excel указали диапазон, который затем приложение будет использовать автоматически. К счастью, функция InputBox в Visual Basic для приложений поддерживает эту задачу, так что вам не придется много работать! В этой статье вы узнаете, как выбрать диапазон с помощью поля ввода.

ВИДЕТЬ: 83 советов по Excel для каждого пользователя (TechRepublic)

Подробнее о Windows

я использую Microsoft 365 на Windows 10 Система 64-битная, но можно использовать и более ранние версии. Excel Online не поддерживает процедуру VBA, описанную в этой статье. Загрузите демонстрационные файлы .xlsm, .xls и .cls чтобы легко получить доступ к коду.

Что такое поле ввода?

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

Эта функция имеет только один обязательный аргумент, подсказка:

Поле ввода(подсказканазвание ], [ по умолчанию ], [ Экспос ], [ да ], [ файл помощиконтекст ], [напишите])

Команда приглашения представляет собой строковое выражение, отображаемое в диалоговом окне; используйте это, чтобы сказать пользователю, что делать; обычно эта строка предлагает пользователю ввести какой-либо тип контента. Таблица A предлагает краткое объяснение каждого аргумента, но мы будем использовать только следующие три: приглашение, заголовок и тип. Таблица B показывает возможные значения типов; мы будем использовать 8, потому что это значение возвращает объект Range.

Таблица A

Аргумент

объяснение

Тип возвращаемых данных

Незамедлительный

Текст, который отображается в диалоговом окне. Максимальное количество символов — 1,024, но я рекомендую вам быть как можно более кратким.

строка

Название

Это необязательное строковое выражение отображается в строке заголовка диалогового окна. Если вы опустите этот аргумент, VBA отобразит имя приложения.

Вариант

По умолчанию

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

Вариант

XPOS

Это необязательное числовое выражение указывает в твипах расстояние по горизонтали между левым краем диалогового окна и левым краем экрана. Если этот параметр опущен, диалоговое окно центрируется по горизонтали.

Вариант

Yпос

Это необязательное числовое выражение указывает в твипах расстояние по вертикали от верхнего края диалогового окна до верхней части экрана. Если этот параметр опущен, диалоговое окно центрируется по вертикали. Использовать Экспос и да вместе, чтобы определить, где диалоговое окно отображается на экране.

Вариант

файл справки

Эта необязательная строка определяет файл справки, который следует использовать для предоставления контекстно-зависимой справки. Если вы используете файл помощи, вы также должны использовать контекст.

Вариант

Контекст

Это числовое выражение является номером контекста в файл помощи.

Вариант

Тип   

 

Это числовое выражение указывает тип возвращаемых данных. Видеть Таблица B для полного списка значений. 

Вариант

Таблица B

Значение

объяснение

0

Формула

1

Число

2

Текст (строка)

4

Логическое значение (Истина или Ложь)

8

Ссылка на ячейку как объект Range

16

Значение ошибки, например #N/A

64

Массив значений

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

Теперь, когда вы знаете о InputBox, давайте воспользуемся им в простой процедуре. В частности, процедура в Листинг А предложит вам выбрать диапазон. После нескольких проверок значений процедура отобразит выбранный вами диапазон в окне сообщения. Если вы не введете допустимый диапазон, функция отобразит встроенное сообщение об ошибке.

Листинг А

Подселективный диапазон ()

'Используйте поле ввода, чтобы запросить у пользователя диапазон.

'Проверка отмены и выбора одной ячейки.

Уменьшить диапазон как диапазон

On Error Resume Next

Установите rng = Application.InputBox(_

      Title:="Пожалуйста, выберите диапазон", _

      Подсказка:="Выбрать диапазон", _

      Тип:=8)

По ошибке GoTo 0

'Проверка на отмену.

Если rng ничего, тогда выйдите из Sub

'Тест на выбор одной ячейки. 

'Удалите символ комментария, если выбор одной ячейки разрешен.

Если rng.Rows.Count = 1 Тогда

    MsgBox «Вы выбрали только одну ячейку». _

    & «Пожалуйста, выберите несколько смежных ячеек», vbOKOnly

    Exit Sub

End If

'Удалите комментарий, чтобы выбрать диапазон ввода.

'rng.Выбрать

MsgBox rng.Адрес

End Sub

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

Чтобы войти в процедуру, нажмите Alt + F11, чтобы открыть редактор Visual Basic. В обозревателе проектов слева выберите ThisWorkbook, чтобы выполнить процедуру на любом листе. Вы можете ввести код вручную или импортируйте загружаемый файл .cls. Кроме того, макрос находится в загружаемые файлы .xlsm и .xls. Если вы вводите код вручную, не вставляйте его с этой веб-страницы. Вместо этого скопируйте код в текстовый редактор, а затем вставьте его в модуль ThisWorkbook. Это приведет к удалению всех фантомных веб-символов, которые в противном случае могли бы вызвать ошибки.

ВИДЕТЬ: Windows 10: списки голосовых команд для распознавания речи и диктовки (бесплатный PDF) (TechRepublic)

Теперь пришло время использовать процедуру, предлагающую выбрать диапазон. Для наших целей выбранный вами диапазон не имеет значения. Чтобы отобразить поле ввода, выполните следующие действия:

  1. Щелкните вкладку Разработчики.
  2. Нажмите «Макросы» в группе «Код».
  3. В появившемся диалоговом окне выберите SelRange(), как показано на Рисунок A и нажмите «Выполнить».
  4. При появлении запроса выберите любой диапазон (см. Рисунок B), а затем нажмите кнопку ОК.

Рисунок A

Выберите процедуру.

”Данные-кредит>excelselrange-macro-a.jpg

Выберите процедуру. 

Рисунок B

С помощью мыши выберите диапазон.

”Данные-кредит>Excelselrange-макрос-b.jpg

С помощью мыши выберите диапазон. 

Как вы можете видеть в Рисунок C, процедура отображает выбранный диапазон в виде текста. Нажмите OK, чтобы закрыть окно сообщения. Обратите внимание, что ссылка является абсолютной. Если вам нужно, чтобы что-то было относительным, добавьте код, который удаляет соответствующие (или все) символы $. Вы можете ввести диапазон с клавиатуры с символами $ или без них; однако InputBox преобразует ссылку в абсолютную.

Рисунок C

Процедура отображает выбранный диапазон в виде текста.

”Данные-кредит>excelselrange-macro-c.jpg

  Процедура отображает выбранный диапазон в виде текста.

Вот как работает InputBox в электронной таблице

После определения переменной rng как объекта Range оператор Set запускает InputBox. Поскольку аргумент типа равен 8, InputBox ожидает выбор. Если вы введете что-либо еще, процедура отобразит сообщение об ошибке, показанное на Рисунок D. Это означает, что вам не нужна какая-либо специальная обработка ошибок, оператор позаботится об этом за вас.

Рисунок D

InputBox сообщит вам, когда вы ввели что-либо, кроме выбора диапазона.

”Данные-кредит>Excelselrange-макро-d.jpg

  InputBox сообщит вам, когда вы ввели что-либо, кроме выбора диапазона. 

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

Переменная rng сохраняет выбранный диапазон как объект Range; применяя это к своей работе, вы должны иметь дело с переменной как с объектом Range. Однако, благодаря многочисленным свойствам и событиям, вам вряд ли придется заглянуть за их пределы.

Эта процедура не предлагает никакой обработки ошибок, кроме встроенной ошибки, которую вы видите, если вводите что-либо кроме диапазона (Рисунок D). Вы захотите добавить контекстно-зависимую обработку при использовании InputBox в своих собственных книгах. 

Маловероятно, что вам захочется выполнять все эти шаги каждый раз, когда захотите запустить процедуру. Вместо этого добавьте макрос на панель быстрого доступа. Для этого прочтите Как добавить макросы Office на панель инструментов QAT для быстрого доступа.

Также см

Источник: https://www.techrepublic.com/article/how-to-use-vbas-inputbox-function-to-select-a-range-on-the-fly-in-excel/#ftag=RSS56d97e7

Отметка времени:

Больше от Программное обеспечение на TechRepublic