Klick aufs Kreuz sprung ins Blatt
#1
Hallo liebe Experten von Excel,

ich habe ein Tabellenblatt mit Namen "START".
Hier gibt es zahlreiche Commandbutton, die bei Klick das entsprechende Blatt anspringen.

Jetzt möchte ich, dass bei einem Klick aufs Kreuz oben rechts nicht die übliche Frage nach Speichern und dann Ende kommt,
sondern, dass das Klicken aufs Kreuz automatisch wieder zurück zum Tabellenblatt "START" geht.

Und hier soll der User dann die Datei speichern können.
Das Speichern der Datei klappt, aber der Sprung durch das Klicken aufs Kreuz nicht.

Kann mir da jemand sagen wie der Code dafür heißen muss?
Vielen Dank

Gruß Achim
Antworten Top
#2
Hi
im Modul "DieseArbeitsmappe":

Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If ActiveSheet.Name <> "Start" Then
    Sheets("Start").Select
    Cancel = True
End If
End Sub
wobei das auch läuft, wenn du versuchst die Mappe auf andere Weise zu schließen (Menü Datei-Schließen, STRG+F4)
Gruß Daniel
Antworten Top
#3
Hallo Achim,

ergänzend zu Daniels Beitrag hier eine Variante, die nur auf das Systemkreuz reagiert.

Siehe auch diesen Beitrag
https://www.clever-excel-forum.de/Thread...k-abfangen

Code:

' Code in "DieseArbeitsmappe"

Private Declare PtrSafe Function GetWindowRect Lib "user32" ( _
        ByVal hwnd As LongPtr, lpRect As RECT) As Long
Private Declare PtrSafe Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long

Private Type RECT
  Left   As Long
  Top    As Long
  Right  As Long
  Bottom As Long
End Type

Private Type POINTAPI
  x As Long
  y As Long
End Type

Function CheckSystemkreuzClick() As Boolean
  Dim PT As POINTAPI, R As RECT
 
  GetCursorPos PT                               ' Mausposition holen
  GetWindowRect Application.hwnd, R             ' Maße des Excelfensters holen
  If PT.x < R.Right And PT.x > (R.Right - 68) And _
     PT.y > R.Top And PT.y < R.Top + 50 Then CheckSystemkreuzClick = True
End Function

Private Sub Workbook_BeforeClose(Cancel As Boolean)
  If CheckSystemkreuzClick Then
     If ActiveSheet.Name <> "Start" Then
        Sheets("Start").Select
        Cancel = True: Exit Sub
     End If
  End If
End Sub

_________
viele Grüße
Karl-Heinz
[-] Folgende(r) 1 Nutzer sagt Danke an volti für diesen Beitrag:
  • Egon12
Antworten Top
#4
Hallo,

erst einmal vielen Dank für die Lösung zu meinem Anliegen.

Ich habe die Version von Daniel mal eingebaut.
Die ist kurz und funktioniert genau nach meinen Vorstellungen.

Die Variante von Karl-Heinz sieht relativ kompliziert aus.
Ich habe sie nicht getestet, weil die von Daniel bereits super funktioniert.
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste