Перейти к содержимому
Наше приложение «Дешевые авиабилеты» в AppGallery >>

VBA Excel. Создание диалогового окна Popup

    Создание диалогового окна в VBA Excel методом Popup объекта WScript.Shell. Ключевые особенности Popup. Время ожидания и возвращаемые значения.

    При автоматизации процессов в Excel часто требуется вывести пользователю информационное сообщение, предупреждение или запросить подтверждение действия. Помимо стандартной функции MsgBox, в VBA Excel доступен альтернативный и более гибкий инструмент — метод Popup объекта WScript.Shell.

    Что такое объект WScript.Shell

    WScript.Shell — это COM-объект Windows Script Host, предназначенный для взаимодействия со средой Windows. С его помощью можно:

    • запускать внешние программы;
    • работать с системными переменными;
    • обращаться к реестру Windows;
    • выводить диалоговые окна с помощью метода Popup.

    Для использования объекта в VBA не требуется подключение дополнительных библиотек — он создаётся динамически.

    Метод Popup: назначение и возможности

    Метод Popup позволяет выводить диалоговое окно с сообщением и кнопками, аналогичное MsgBox, но с дополнительной возможностью задать тайм-аут (автоматическое закрытие окна через определенное время).

    Синтаксис метода Popup

    Параметры

    • Text — текст сообщения.
    • SecondsToWait — время ожидания в секундах. Если 0, окно будет ждать ответа пользователя.
    • Title — заголовок окна.
    • Type — числовое значение, определяющее кнопки и иконку.

    Значения параметра Type

    Чтобы задать в параметре Type кнопки с иконкой, просто укажите сумму их значений (3 + 32) или сумму констант (vbYesNoCancel + vbQuestion).

    Кнопки

    Константа Описание Значение
    vbOkOnly Только кнопка OK 0
    vbOkCancel Кнопки OK и Cancel (Отмена) 1
    vbAbortRetryIgnore Кнопки Abort (Прервать), Retry (Повтор) и Ignore (Пропустить) 2
    vbYesNoCancel Кнопки Yes (Да), No (Нет) и Cancel (Отмена) 3
    vbYesNo Кнопки Yes (Да) и No (Нет) 4
    vbRetryCancel Кнопки Retry (Повторить) и Cancel (Отмена) 5

    Иконки

    Константа Описание Значение
    vbCritical Значок Critical — сообщение об ошибке 16
    vbQuestion Значок Question — сообщение с вопросом 32
    vbExclamation Значок Exclamation — предупреждающее сообщение 48
    vbInformation Значок Information — информационное сообщение 64

    Результаты нажатия кнопок

    Кнопка Описание Возвращаемое значение
    Ничего не нажато в течение timeout -1
    vbOk OK 1
    vbCancel Отмена 2
    vbAbort Прервать 3
    vbRetry Повтор 4
    vblgnore Пропустить 5
    vbYes Да 6
    vbNo Нет 7

    Базовый пример использования Popup в VBA Excel

    В данном примере:

    • 0 — окно будет отображаться до нажатия кнопки пользователем.
    • 64 — иконка информационного сообщения;

    Использование Popup с тайм-аутом

    Одно из главных преимуществ Popup — автоматическое закрытие окна.

    Если пользователь не нажмёт кнопку, окно закроется самостоятельно по истечении указанного времени. Тесты показали, что при установленных 5 секундах, окно Popup может закрыться через 20, 7, 15, 13 секунд. Главное — закрывается.

    Получение результата нажатия кнопки

    Метод Popup возвращает числовой код, соответствующий выбранной кнопке.

    Когда использовать Popup вместо MsgBox

    Метод WScript.Shell.Popup — тоже вполне рабочий инструмент для создания диалоговых окон в VBA Excel. Он расширяет стандартные возможности MsgBox, позволяя задавать тайм-аут — автоматическое закрытие окна через заданный промежуток времени.

    В остальном Popup и MsgBox очень похожи:

    • кнопки и иконки задаются одними и теми же константами;
    • нажатия одинаковых кнопок возвращают одинаковые значения.

    Используйте WScript.Shell.Popup, если требуется автоматическое закрытие сообщения. Для простых диалогов внутри Excel проще использовать MsgBox.

    Познакомьтесь с другими диалоговыми окнами, используемыми в VBA Excel.


    Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.