Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Rückgängigfunktion im Makro

Forumthread: Rückgängigfunktion im Makro

Rückgängigfunktion im Makro
DagmarGP
Hallo alle miteinander,
seit langer Zeit versuche ich mich mal wieder im Aufzeichnen eines Makros. Ich möchte mit "Suchen und ersezten" ein Blatt verändern, dann drucken und zuletzt wieder die Ausgangswerte im Blatt sehen.
Beim Versuch ohne Aufzeichnen des Makros erreiche ich das mit der Rückgängig-Funktion. Diese läßt sich aber wohl nicht aufzeichnen? Nochmals mit "Suchen und Ersetzen" zurück, geht leider nicht, da die neue Zahl auch an Stellen vorkommt, wo sie nicht ersetzt werden soll.
Ich hoffe, ich konnte mein Problem einigermaßen beschreiben.
Vielen Dank für Eure Hilfe
Gruß
Dagmar
Anzeige
AW: Rückgängigfunktion im Makro
04.04.2012 13:48:20
JoWE
Hallo Dagmar,
so geht's nicht?
Sub drucken_und_wiederherstellen()
ActiveSheet.PrintOut
Application.Undo
End Sub
Gruß
Jochen
AW: Rückgängigfunktion im Makro
04.04.2012 14:08:20
ing.grohn
Hallo Dagmar,
m. W. gibt es mit VBA KEIN undo!!
Mit freundlichen Grüßen
Albrecht
AW: Rückgängigfunktion im Makro
04.04.2012 14:32:53
Reinhard
Hallo Albrecht,
ich weiß nicht wo du grad liegst aber du liegst da falsch :-)
Es gibt UnDo.
Schreib mal in A1 einen Wert. Dann gehst du wieder in A1 und änderst ihn ab und Enter.
Dann starte dieses makro:
Sub tt()
Application.Undo
End Sub

und der alte Wert erscheint wird. (Gibt auch ReDo)
Sobald aber das makro itgendwas anderes im Blatt macht so wird Bearbeiten---Rückgängig "leer",
deaktiviert.
Will man aber die Funktionalität nach einem Makro auch haben so muß man sich "Rückgängig*
vorher per makro selbst basteln.
Es gibt auch OnUnDo, damit kann man sich eigene Makros basteln die ausgeführt werden wenn man in Excel auf Bearbeiten---Rückgängig klickt.
Gruß
Reinhard
Anzeige
Beispiel für OnUnDo
04.04.2012 14:39:34
Reinhard
Hallo,
starte mal "test" und gehe dann in Excel auf Bearbeiten---huhu...

Option Explicit
Public Merker
Sub test()
Merker = Range("A1").Value
Range("A1").Value = "neuer Wert"
Application.OnUndo "huhu", "Rueck"
End Sub
Sub Rueck()
Range("A1").Value = Merker
End Sub

Gruß
Reinhard
Anzeige
AW: Rückgängigfunktion im Makro
04.04.2012 16:56:18
ing.grohn
Hallo Reinhard,
mach doch mal folgendes:
Sub test_undo()
'schreib in den Bereich B4:E8 was rein, dann
Range("B4:E8").ClearContents
Application.OnUndo
'und was jetzt
End Sub

Mit freundlichen Grüßen
Albrecht
AW: Rückgängigfunktion im Makro
04.04.2012 21:24:48
Reinhard
Hallo Albert,
wenn der Debugger gute Laune hat läßt er den Code laufen ansonsten beschwert er sich
wegen des fehlenden Arguments.
Hast du UnDo gemeint so wird bei diesem Code B4:E8 nicht wiederhergestellt. Dies schrieb ich aber schon in meinem Beitrag: """Sobald aber das makro itgendwas anderes im Blatt macht so wird
Bearbeiten---Rückgängig "leer",deaktiviert.""""
Gruß
Reinhard
Anzeige
AW: Rückgängigfunktion im Makro
04.04.2012 14:22:30
DagmarGP
Hallo Jochen,
nein das funktioniert nicht. Es kommt die Fehlermeldung "Die Methode "Undo" ist für das Objekt "Application" fehlgeschlagen".
Gibt es vielleicht eine andere Möglichkeit? Manchmal sieht man ja den Wald vor lauter Bäumen nicht.
Trotzdem Danke für die schnelle Antwort
Gruß
Dagmar
Anzeige
AW: Rückgängigfunktion im Makro
04.04.2012 14:31:52
JoWE
...um wieviele Werte handelt es sich?
Kann/können der/die Werte über eine/mehrere Inputboxen oder ein UF gesetzt werden?
Dann könnten die "alten" Daten bei Ausführung einer Prozedur vor dem "Überschreiben" in Variable geschrieben werden, danach könntest Du Drucken und schließlich würden die Daten aus den Variablen wieder zurückgeschrieben?!?
Gruß
Jochen
P.S.
In Excels VBA-Hilfe gibt es die Undo-Function sehr wohl.
Und die funktioniert an meinem PC genau für die eine letzte Aktion (wie zuvor gepostet) perfekt!
Es kommt auch keine Fehlermeldung!
Anzeige
AW: Rückgängigfunktion im Makro
04.04.2012 14:25:39
Rudi
Hallo,
erstelle dir eine Kopie des Blatts, ändere diese und lösch sie nach dem Drucken wieder.
Gruß
Rudi
AW: Mannoooooooh!!
04.04.2012 14:33:44
JoWE
ja, genau! Hätte ich auch drauf kommen müssen! Ja, ja der Wald und die Bäume....
AW: Mannoooooooh!!
04.04.2012 14:33:56
JoWE
ja, genau! Hätte ich auch drauf kommen müssen! Ja, ja der Wald und die Bäume....
Anzeige
AW: Rückgängigfunktion im Makro
04.04.2012 14:59:52
DagmarGP
Hallo Rudi,
das ist eine gute Idee! So mache ich es.
Vielen Dank fürs über den Tellerrand gucken.
Die anderen Vorschläge waren mir als "Nichtprogrammierer" dann doch zu hoch, aber trotzdem vielen Dank an Alle die so tatkräftig mitgeholfen haben.
Gruß
Dagmar
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Rückgängig-Funktion im Excel-Makro nutzen


Schritt-für-Schritt-Anleitung

Um die Rückgängig-Funktion in einem Excel-Makro zu verwenden, kannst du die folgende Vorgehensweise befolgen:

  1. Makro erstellen: Öffne den VBA-Editor durch Drücken von ALT + F11.

  2. Neues Modul hinzufügen: Klicke mit der rechten Maustaste auf "VBAProject" und wähle "Einfügen" > "Modul".

  3. Code einfügen: Füge den folgenden Code in das Modul ein:

    Sub drucken_und_rueckgaengig_machen()
        ' Drucken des aktiven Blattes
        ActiveSheet.PrintOut
    
        ' Rückgängig machen der letzten Aktion
        Application.Undo
    End Sub
  4. Makro ausführen: Schließe den VBA-Editor und führe das Makro über Makros im Excel-Menü aus.

Beachte, dass die Application.Undo-Funktion nur die letzte Aktion rückgängig macht. Wenn das Makro jedoch weitere Modifikationen am Blatt vornimmt, wird die Rückgängig-Funktion deaktiviert.


Häufige Fehler und Lösungen

  • Fehler: "Die Methode 'Undo' ist für das Objekt 'Application' fehlgeschlagen": Dies kann passieren, wenn das Makro mehrere Änderungen an der Arbeitsmappe vornimmt. Stelle sicher, dass Application.Undo direkt nach der gewünschten Aktion aufgerufen wird.

  • Excel Rückgängig geht nicht: Wenn du versuchst, mehrere Änderungen rückgängig zu machen, wird dies nicht funktionieren, da das Excel-Makro die Undo-Historie nicht speichert. Verwende stattdessen die Application.OnUndo-Methode, um benutzerdefinierte Rückgängig-Optionen zu erstellen.


Alternative Methoden

Eine alternative Methode zur Implementierung der Rückgängig-Funktion ist die Verwendung von Application.OnUndo. Hier ist ein Beispiel:

Sub test()
    Dim Merker As Variant
    Merker = Range("A1").Value
    Range("A1").Value = "neuer Wert"
    Application.OnUndo "Rückgängig machen", "Rueck"
End Sub

Sub Rueck()
    Range("A1").Value = Merker
End Sub

Mit dieser Methode kannst du spezifische Aktionen definieren, die zurückgesetzt werden können, wenn du auf "Rückgängig" klickst.


Praktische Beispiele

Hier sind einige praktische Beispiele zur Verwendung der Rückgängig-Funktion in Excel:

  1. Einfaches Rückgängig-Makro:

    Sub Einfaches_Rueckgaengig()
        ' Wert in Zelle A1 speichern
        Dim Wert As Variant
        Wert = Range("A1").Value
    
        ' Neuen Wert setzen
        Range("A1").Value = "Neuer Wert"
    
        ' Benutzerdefinierte Rückgängig-Option
        Application.OnUndo "Wert in A1 zurücksetzen", "Zuruecksetzen"
    
        ' Funktion zum Zurücksetzen
    End Sub
    
    Sub Zuruecksetzen()
        Range("A1").Value = Wert
    End Sub
  2. Mehrere Zellen ändern und zurücksetzen: Verwende eine ähnliche Technik, um mehrere Zellen zu ändern und eine Rückgängig-Option zu erstellen.


Tipps für Profis

  • Nutze Application.OnUndo clever: Du kannst mehrere benutzerdefinierte Rückgängig-Optionen in einem Makro implementieren, um die Benutzerfreundlichkeit zu erhöhen.

  • Kopiere Daten vor Änderungen: Erstelle eine Kopie der Daten, bevor du sie änderst, um eine einfache Möglichkeit zu haben, die ursprünglichen Werte wiederherzustellen.

  • Dokumentiere deine Makros: Halte Kommentare in deinem Code fest, damit du beim Überarbeiten oder Teilen deines Codes weißt, was jede Funktion tut.


FAQ: Häufige Fragen

1. Warum funktioniert die Rückgängig-Funktion nicht in meinem Makro?
Die Rückgängig-Funktion funktioniert nicht, wenn das Makro mehrere Aktionen durchführt. Stelle sicher, dass Application.Undo direkt nach der gewünschten Aktion aufgerufen wird.

2. Gibt es eine Möglichkeit, mehrere Schritte rückgängig zu machen?
Standardmäßig kann Excel nur die letzte Aktion rückgängig machen. Du kannst jedoch mit Application.OnUndo eigene Funktionen erstellen, um mehrere Aktionen zu verwalten.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige