На рабочем листе есть командная кнопка для отображения 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 по-прежнему свернут.
Хм, возможно, максимизация не работает внутри пользовательской формы: попробуйте определить в стандартном модуле подпрограмму, которая максимизирует ее, и вызовите ее до того, как произойдет выгрузка, сообщите нам, если это сработает.
Существует код для «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
Да, оба блока кода имеют предполагаемое поведение.
Вы выгружаете объект до того, как он попадет в состояние окна, быстрое исправление: максимизируйте excel, прежде чем выгружать объект, который его вызовет, как общий совет: будьте осторожны в жизненном цикле кода и объектов на нем.