Используйте «X», чтобы закрыть пользовательскую форму и развернуть окно Excel

На рабочем листе есть командная кнопка для отображения UserForm1, а также сворачивания окна приложения Excel.

Private Sub CommandButton1_Click()

Application.WindowState = xlMinimized
UserForm1.Show vbModeless

End Sub

Существует код для «X» UserForm1, который выгружает UserForm1 и должен максимизировать окно Excel в качестве переднего окна.

Private Sub cmdExit_Click()
If ExitAsk = vbYes Then
    Unload Me
    Application.WindowState = xlMaximized
End If
End Sub

Все работает, но Excel остается свернутым.

Вы выгружаете объект до того, как он попадет в состояние окна, быстрое исправление: максимизируйте excel, прежде чем выгружать объект, который его вызовет, как общий совет: будьте осторожны в жизненном цикле кода и объектов на нем.

Sgdva 09.12.2022 20:11

Я попытался изменить порядок выгрузки и максимизировать безрезультатно. Excel по-прежнему свернут.

John Whitney 09.12.2022 20:19

Хм, возможно, максимизация не работает внутри пользовательской формы: попробуйте определить в стандартном модуле подпрограмму, которая максимизирует ее, и вызовите ее до того, как произойдет выгрузка, сообщите нам, если это сработает.

Sgdva 09.12.2022 20:26
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
1
3
60
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Существует код для «X» UserForm1, который выгружает UserForm1 и должен максимизировать окно Excel в качестве переднего окна.

Это то, что вы пытаетесь? Это максимизирует пользовательскую форму в тот момент, когда вы нажмете X на пользовательской форме.

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    Application.WindowState = xlMaximized
End Sub

Вы также можете использовать событие UserForm_Terminate для этого

Private Sub UserForm_Terminate()
    Application.WindowState = xlMaximized
End Sub

Да, оба блока кода имеют предполагаемое поведение.

John Whitney 09.12.2022 21:48

Другие вопросы по теме