Установка состояния окна приложения Excel из кода VBA с помощью свойства Application.WindowState. Сворачивание и разворачивание окна. Чтение данных о состоянии окна.
Свойство Application.WindowState
Состояние окна приложения Excel задается константой из коллекции XlWindowState, при чтении информации о состоянии окна — свойство Application.WindowState возвращает числовое значение константы.
Свойство Application.WindowState позволяет развернуть окно приложения Excel из кода VBA на весь экран — до максимального размера, свернуть окно «в иконку» или задать ему нормальные размеры, установленные ранее, развернув из свернутого или свернув из максимального.
Синтаксис свойства WindowState объекта Application:
|
1 |
Application.WindowState |
Константы XlWindowState
Константы из коллекции XlWindowState:
| Константа | Значение | Описание |
|---|---|---|
| xlMaximized | -4137 | Максимальное окно (развернуто на весь экран) |
| xlMinimized | -4140 | Минимальное окно (свернуто «в иконку») |
| xlNormal | -4143 | Нормальное окно (размеры, установленные ранее) |
Пример кода с WindowState
Пример записи и чтения свойства Application.WindowState:
|
1 2 3 4 5 6 7 8 9 |
Sub Test() 'Запись свойства WindowState Application.WindowState = xlMaximized 'или -4137 'Application.WindowState = xlMinimized 'или -4140 'Application.WindowState = xlNormal 'или -4143 'Проверка, в каком состоянии находится окно приложения MsgBox Application.WindowState End Sub |
Попробуйте по очереди задавать разные константы свойству Application.WindowState и смотрите, какое значение будет считано. У меня получились удивительные результаты при выполнении строк кода по очереди, как в примере:
Application.WindowState = xlMinimized— MsgBox возвращает совсем не -4140;- после первого запуска
Application.WindowState = xlNormal— окно приложения разворачивается на весь экран, после второго запуска — переходит к нормальному состоянию.
Не удалось мне добиться значения -4140 и при минимизации окна вручную, разместив предварительно следующий код в модуль книги:
|
1 2 3 |
Private Sub Workbook_WindowResize(ByVal Wn As Window) MsgBox Application.WindowState End Sub |