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

VBA Excel. Пользовательская форма на весь экран

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

    Пользовательская форма на весь экран

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

    Способ 1: через объект Application

    Первый способ основан на использовании свойств объекта Application для получения размеров основного окна Excel в полноэкранном режиме и установки этих размеров для UserForm.

    Пример кода:

    Преимущества:

    • Простая реализация, не требующая подбора каких-либо коэффициентов.
    • Работает при любом масштабировании экрана и других влияющих параметрах.

    Недостатки:

    • Визуальные «мелькания» программы Excel при включении и отключении полноэкранного режима.
    • В старых версиях Excel свойство .DisplayFullScreen может не поддерживаться. В этом случае, как альтернативу, можно использовать Application.WindowState = xlMaximized  перед установкой размеров формы и Application.WindowState = xlNormal после.

    Способ 2: с использованием WinAPI

    Второй способ использует функцию Windows API GetSystemMetrics, позволяющую получить точные размеры экрана. Это позволяет избежать переключений между режимами Excel и даёт больше контроля над отображением формы.

    Подключение функции WinAPI:
    Разместите код функции WinAPI в стандартном модуле, в модуле формы она работать не будет:

    Ключевое слово PtrSafe необходимо для корректной работы в 64-битных версиях Office.

    Основной код формы:
    Этот код размещается в модуле формы (UserForm):

    Преимущества:

    • Нет визуальных эффектов в виде «мелькания» основного окна Excel при запуске формы.
    • Прямая работа с системными размерами экрана.

    Недостатки:

    • Требуется использование функции Windows API и ее объявление в стандартном модуле.
    • Необходимость подбора коэффициента k для корректного отображения формы во весь экран, который может отличаться в зависимости от настроек масштабирования монитора и, возможно, каких-либо других условий.

    Коэффициент k необходим, чтобы учесть масштабирование экрана, которое часто установлено на 125%, 150% или выше. Возможно, что-то еще влияет, кроме масштабирования. У моего монитора масштабирование составляет 150%, но форма разворачивается на весь экран при k = 1.99, а не при k = 1.5.

    Заключение

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


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