Мне нужно Excel, чтобы закрыть, когда я закрываю пользовательскую форму - PullRequest
0 голосов
/ 30 марта 2020

Искал ответы во всем, и ни один из них не работает. Мне нужно, чтобы Excel полностью закрылся, когда кто-то пытается закрыть пользовательскую форму.

В настоящее время у меня есть это:

Private Sub UserForm_Terminate()
    ThisWorkbook.Close SaveChanges = False
    Application.Quit
End Sub

Ответы [ 2 ]

1 голос
/ 30 марта 2020

Попробуйте событие UserForm_QueryClose. Вы можете определить, какой код вызвал это событие, проверив значение параметра CloseMode в этом событии, а затем закройте оттуда Excel.

См. Ниже:

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

    'for reference; you don't need this in your case, but it is useful
    'If ((CloseMode And VBA.VbQueryClose.vbFormCode) = VBA.VbQueryClose.vbFormCode) _               'user clicked button that calls 'Unload Me'
    'Or ((CloseMode And VBA.VbQueryClose.vbFormControlMenu) = VBA.VbQueryClose.vbFormControlMenu) _     'user clicked default Red "X" button 
    'Then   
        'do some stuff 

    'End If

    ExitApp

End Sub

Private Sub ExitApp()

    If Application.Workbooks.Count = 1 Then
        Application.Quit

    Else
        ThisWorkbook.Saved = True
        ThisWorkbook.Close SaveChanges = False

    End If

End Sub


Private Sub btnCancel_Click()

    Unload Me   'this would raise the QueryClose event

End Sub
0 голосов
/ 30 марта 2020

Лучше Безопасный, чем Извините

Если вы действительно уверены, что открыта только одна рабочая книга, вы можете использовать это:

Sub AppQuit()
    ActiveWorkbook.Saved = True
    Application.Quit
End Sub

Но если нет, лучше попробуйте это для одного или несколько открытых рабочих книг (рекомендуется):

Sub AppQuitAll()
    Dim wb As Workbook
    For Each wb In Workbooks
        wb.Saved = True
    Next
    Application.Quit
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...