VBA / EXCEL - Undo Funktion

Hallo zusammen,

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.

Was mache ich falsch?

Ich habe „ActiveDocument“ in „ActiveWorkbook“ abgeändert. Habe ich was falsch gemacht oder vergessen?

Grüße
dnbma

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 

Hallo Reinhard,
Danke für die Antwort.
Schade dass es in Excel nicht so leicht is wie in Word. Wäre eigentlich echt praktisch gewesen (z.B. als Addin speichern etc.)

Naja ich mach es mal ganz primitiv. ich habe folgenden Code (kommt den eine oder anderen bestimmt bekannt vor :wink: mit einer Textbox und Keyup event hinterlegt)

Dim Zei As Long, Z As Long
Zei = Cells(Rows.Count, 3).End(xlUp).Row
Rows("6:" & Zei).Hidden = True
For Z = 6 To Zei
 If Cells(Z, 3) Like "\*" & Cells(3, 3) & "\*" Then Rows(Z).Hidden = False
Next Z

also immer wenn eine Taste „losgeslassen“ wird, führ Excel-VBA diesen Code aus. Funktioniert sehr gut soweit. Aber wenn ich Rücktaste drücke soll es „eignetlich ja rückwärts“ gehen. Und das funktioniert ja nicht so richtig. Und da ich noch andere Zellen filtern muss/will kann ich nicht einfach alles wieder einblenden. Deshalb wäre hier das Rückgängig-machen perfekt.

Grüße
dnbma

Hi,

in Excel ist das tatsächlich nicht so einfach. Erstmal
killt der Aufruf eines Makros die komplette UNDO-Liste.
Wenn man das irgendwie aushebeln könnte, ist es mit
„Boardmitteln“ kaum möglich per Hand da was reinzuschreiben.
Bleiben also nur die bereits angesprochenen Lösungen,
nämlich Deine Änderungen in einer Liste so zu vermerken,
daß ein anderes Makro in der Lage ist, den alten Zustand
wieder herzustellen.

Einfacher wird es wohl sein, bei jedem Makroaufruf eine
Kopie des Arbeitsblattes/der ganzen Mappe mit angehängtem
fortlaufenden Zähler zu erzeugen. Beim Makro rückgängig
machen ersetzt Du das aktuelle Blatt einfach durch die
Version mit dem höchsten Zähler und löscht diese danach.
Bei den heutigen Plattenkapazitäten und Schreib/Lese-Raten
sollte das kein Problem darstellen.

LG Alex

Ok Danke!

Ich schau ma dass ich es hin bekomme.

Grüße
dnbma

Hallo zusammen,

hätte einer der Profis villeicht eine Idee.

Lösungsansatz?

Ich hab überhaupt keine… :frowning:

Oder geht das gar nicht?

Grüße