Änderungen verwerfen, Worksheet_Deactivate
Fritz
nach einer Excel-lenten-Nacht habe ich gelernt: Je tiefer man einsteigt, um so weniger weiß man.
Wenn in einem bestimmten Bereich $G$33:$L$39 mehrere Änderungen vorgenommen wurden, startet nach Verlassen dieses Bereichs ein Makro nach vbYes der MsgBox Wollen Sie das wirklich? oder so. Bis hierher bin ich schon mächtig stolz auf mich.
Bei vbNo sollen die Änderungen in dem o.a. Bereich verworfen und der alte Zustand wieder hergestellt werden. Hier verlassen Sie mich.
Zweites Problem:
Wenn der Anwender zwar Änderungen in dem o.g. Bereich vorgenommen hat, aber ohne den Bereich zu verlassen auf ein anderes Tabellenblatt wechselt, passiert nix.
Frage: Wie kriege ich den Anwender dazu, bei mir zu verharren, bis er sich entschieden hat?
Wie immer sehr dankbar für Unterstützung wäre
Fritz
Der Code, soweit ich ihn fertig habe (natürlich auch schmarotzt von H. Herbers CD)
Dim Schalter As Boolean
Private Sub Worksheet_SelectionChange _
(ByVal Target As Excel.Range)
Application.ScreenUpdating = False
Dim Bereich As Range
' Objektvariable für die relevante Zelle setzen
Set Bereich = Range("$G$33:$L$39")
' wenn die aktuelle Zelle die relevante
' Zelle ist, dann Schalter auf Wahr stellen
If Not Intersect(Target, Bereich) Is Nothing _
Then Schalter = True
' Wenn der Schalter auf Wahr steht und die aktuelle
' Zelle nicht die relevante Zelle ist, dann
Automatische_Speicherung_Aus
If Schalter = True And Intersect(Target, Bereich) _
Is Nothing Then
MsgBox "Sie haben Veränderungen vorgenommen" & Chr(13) & "Sollen diese Änderungen verarbeitet werden?", vbYesNo
If vbYes Then
MsgBox "Die Verarbeitung wird einige Sekunden in Anspruch nehmen" & Chr(13) & "Klicken Sie auf ""OK"""
MsgBox "Hier liefe jetrzt das Makro"
' Schalter auf Falsch setzen
Schalter = False
End If
End If
Automatische_Speicherung_Ein
Application.ScreenUpdating = True
End Sub
P.S. an joel: Nach weniger Grübelei als zunächst vermutet habe ich Deinen code so für mich zurecht gebastelt, dass er sich hübsch einfügt. Nochmals überschäumenden Dank.
Fritz