wie heißt das Ereignis wenn man oben rechts ein Userorm über das
kleine "x" schließt?
Gruß
Swen
Private Sub CommandButton1_Click()
Unload Me
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then
If MsgBox("X geklickt! Wirklich Schließen?", vbYesNo) = vbNo Then Cancel = True
End If
End Sub
Private Sub UserForm_Activate()
Dim lHwnd As Long
lHwnd = FindWindow("ThunderDFrame", Me.Caption)
SetWindowLong lHwnd, GWL_STYLE, GetWindowLong(lHwnd, GWL_STYLE) And Not WS_SYSMENU
DrawMenuBar lHwnd
End Sub
Um ein Fenster in Excel zu schließen, insbesondere ein UserForm, kannst Du den folgenden VBA-Code verwenden. Dieser Code sorgt dafür, dass beim Klicken auf einen Button das Fenster geschlossen wird:
Private Sub CommandButton1_Click()
Unload Me
End Sub
Falls Du das Schließen über das Schließkreuz (X) abfangen möchtest, kannst Du das QueryClose-Ereignis nutzen. Hier ein Beispiel, das eine Bestätigungsabfrage einfügt:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then
If MsgBox("X geklickt! Wirklich Schließen?", vbYesNo) = vbNo Then Cancel = True
End If
End Sub
Problem: Das UserForm schließt sich nicht, wenn das Schließkreuz gedrückt wird.
Lösung: Stelle sicher, dass Du das Cancel-Argument im QueryClose-Ereignis korrekt verwendest. Wenn Cancel = True gesetzt ist, wird das Schließen verhindert.
Problem: Ich kann das Schließkreuz nicht ausblenden.
Lösung: Um das Schließkreuz auszublenden, füge den folgenden Code in das UserForm-Codemodul ein:
Private Declare Function FindWindow Lib "User32" Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Declare Function GetWindowLong Lib "User32" Alias "GetWindowLongA" ( _
ByVal hWnd As Long, _
ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "User32" Alias "SetWindowLongA" ( _
ByVal hWnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Private Declare Function DrawMenuBar Lib "User32" ( _
ByVal hWnd As Long) As Long
Private Const GWL_STYLE = -&H10
Private Const WS_SYSMENU = &H80000
Private Sub UserForm_Activate()
Dim lHwnd As Long
lHwnd = FindWindow("ThunderDFrame", Me.Caption)
SetWindowLong lHwnd, GWL_STYLE, GetWindowLong(lHwnd, GWL_STYLE) And Not WS_SYSMENU
DrawMenuBar lHwnd
End Sub
Wenn Du ein neues Fenster in Excel öffnest und es schließen möchtest, gibt es auch die Möglichkeit, ein Excel-Dokument zu schließen, ohne das Programm zu beenden. Verwende folgenden Befehl:
ThisWorkbook.Close SaveChanges:=False
Um ein Browserfenster zu schließen, kannst Du die Application.Quit-Methode verwenden, dies schließt jedoch alle Excel-Fenster.
UserForm_QueryClose-Ereignis, um den Benutzer zu fragen, ob er wirklich schließen möchte.QueryClose-Ereignis nicht nur zum Schließen, sondern auch um Daten zu speichern oder andere Aktionen durchzuführen, bevor das Fenster geschlossen wird.1. Wie kann ich das Schließen eines Excel-Fensters verhindern?
Du kannst das Cancel-Argument im QueryClose-Ereignis auf True setzen, um das Fenster geschlossen zu halten.
2. Was mache ich, wenn das Schließkreuz nicht funktioniert?
Überprüfe, ob Du das richtige Ereignis (QueryClose) verwendest und stelle sicher, dass keine anderen Makros oder Einstellungen das Schließen beeinträchtigen.
3. Ist es möglich, mehrere Excel-Fenster gleichzeitig zu schließen?
Ja, Du kannst dies durch Schleifen über die Workbook-Objekte und das Schließen jedes einzelnen erreichen.