VBA / EXCEL - Undo Funktion

ich muss immer einzelene Makros rückgängig machen. Deswegen
habe in google gesucht und sogar was gefunden allerdings ist
das für Word:

http://groups.google.com/group/microsoft.public.word…

und im Word funktioniert es super. Aber in Excel leider nicht.

Hallo dnbma,

nach meiner Kenntnis geht das in Excel nicht so.
Grundsätzlich mußt du selbst Daten die du per Makro veränderst vorher irgendwie abspeichern mit dem gleichen Makro.
Dann kannst du das mit einem Gegen-makro wieder rückgängig machen.
Geht auch mit Bearbeiten–Rückgängig bzw. Strg+z wenn du im Makro OnUndo benutzt.

Schau mal hier, da hatte ich mal was gebastelt:

/t/rueckgaengig-machen-bei-vba-makros/2204260

Nachstehend ist ein Code von MichV(ypsilon) der OnUndo nicht benutzt sondern einfach nur „merkt“

Gruß
Reinhard

Private Sub CommandButton1\_Click()
 If MsgBox("Änderungen des vorherigen Makroaufrufes rückgängig machen?", vbQuestion + vbYesNo, "Frage") = vbYes Then
 Sollstunden\_April (True) 'Rückgängig machen
 Else
 Sollstunden\_April 'normal ausführen
 End If
End Sub


Sub Sollstunden\_April(Optional Rückgängig As Boolean)
Static Merke(1 To 8) '8 ggf. anpassen! =Anzahl der Zellen, die Du Dir merken willst

If Not Rückgängig Then
 If Not MsgBox("Soll das Makro ausgeführt werden?", vbQuestion + vbYesNo, "Frage") = vbYes Then Exit Sub
 Merke(1) = Range("A1")
 Range("A1") = Range("A2").Value
 Merke(2) = Range("B1")
 Range("B1") = Range("B2").Value
 'usw.
 'diese Zeilen musst Du an Deine Ansprüche anpassen
 'wichtig ist, daß Du den Wert der sich ändernden Zelle
 'vorher im Feld Merke() ablegst.
Else
 If Not MsgBox("Sollen die Änderungen des Makros rückgängig gemacht werden?", vbQuestion + vbYesNo, "Frage") = vbYes Then Exit Sub
 Range("A1") = Merke(1)
 Range("B1") = Merke(2)
 'usw.
 'wieder anpassen. Hier werden die Werte aus dem Merke()-Feld
 'wieder in die Zellen zurückgeschrieben.
End If
End Sub