Во многих встроенных диалоговых окнах Excel пользователи могут выбирать диапазоны ячеек. Например, в диалоговом окне "Подбор параметра" (его можно найти через Данные → Работа с данными → Анализ "что если" → Подбор параметра), пользователю можно указать две отдельные ячейки. Это можно сделать либо, введя имена диапазонов вручную, либо выделив их с помощью мыши.
Пользовательские диалоговые окна Excel также могут предоставлять такие возможности с помощью элемента управления RefEdit.
Хотя он выглядит иначе, чем стандартные элементы выбора диапазона, работает он точно так же. Когда пользователь щёлкает на кнопке справа от элемента управления RefEdit, диалоговое окно временно исчезает, и появляется указатель выбора диапазона. Это очень похоже на поведение встроенных диалоговых окон Excel.
Однако стоит отметить, что элемент RefEdit не поддерживает специальные клавиши для выделения диапазона (например, нельзя использовать клавишу <End> и комбинацию <Shift+стрелка>). Также после нажатия на маленькую кнопку справа от элемента RefEdit диапазон можно выделять только с помощью мыши, клавиатуру при этом использовать нельзя.
На скриншоте ниже показано пользовательское диалоговое окно с добавленным элементом RefEdit. Это окно выполняет простые арифметические операции над всеми непустыми и не содержащими формул ячейками указанного диапазона. Операция определяется активным переключателем OptionButton (Ок).
📌 Скачать файл пример, можно в конце статьи.
Ниже приведены полезные советы по использованию элемента RefEdit.
- Получение диапазона: Элемент RefEdit возвращает текстовую строку, представляющую выбранный диапазон. Чтобы преобразовать эту строку в объект Range, используйте следующий оператор:
- Инициализация элемента: Рекомендуется инициализировать элемент RefEdit для отображения текущего выделенного диапазона. Для этого используйте следующий код в процедуре UserForm_Initialize:
- Избегайте использования внутри Frame или MultiPage: Не размещайте элемент RefEdit внутри элементов Frame или MultiPage, так как это может привести к сбоям в работе Excel.
- Проверка допустимости диапазона: Элемент RefEdit не всегда возвращает действительный диапазон, так как пользователь может ввести любой текст. Поэтому нужно проверять корректность введённого диапазона:
- Выбор диапазона на другом листе: Пользователь может выбрать диапазон на другом листе. В таком случае адрес диапазона будет включать имя листа, например: Лист2!$B$1:$E$4.
- Выбор одной ячейки: Если требуется выбрать только одну ячейку, указывайте верхнюю левую ячейку выделенного диапазона:
Весь макрос с пояснениями практически к каждой строке кода вы увидите на нескольких скриншотах ниже.
В статье №138 упоминается метод InputBox для выделения диапазона, который можно использовать как альтернативу элементу управления RefEdit.