Gebäude Undo in einem Excel-VBA-Makro
Frage
Excel-Makros scheinen nicht die Verwendung von „rückgängig machen“, nachdem sie laufen zu lassen. Gibt es eine Möglichkeit undo
Funktionalität in einen VBA-Makro in Excel zu backen?
Lösung
Excel VBA hat die Application.OnUndo
Funktion, dies zu umgehen:
Public Sub DoSomething
... do stuff here
Application.OnUndo "Undo something", "UnDoSomething"
End Sub
Public Sub UnDoSomething
... reverse the action here
End Sub
Andere Tipps
Mein Gedanke ist ziemlich einfach, da die erste Zeile in Ihrem Makro eine Kopie in einem Backup-Verzeichnis speichert Sie dann die Arbeitsmappe schließen und das Original wieder öffnen. Wenn Sie nicht über die Ergebnisse Ihrer Makro ausführen möchten, ziehen Sie die gespeicherte Arbeitsmappe auf. Halten Sie es einfach nicht wahr?
ich spare sofort immer vor meiner Makros läuft (während der Prüfung mindestens) dann, wenn alles birnenförmig geht, kann ich nur verlassen, ohne zu speichern und öffnen Sie es erneut.
es in das eigentliche Makro Backen, müssen Sie im Grunde den alten Zustand der alles aufnehmen, die (Zellinhalte, Formeln, Formatierung usw.) ändert sich in einer Liste dann eine Undo-Makro haben, die in umgekehrter Richtung zurück, dass die Liste spielt bestellen.
Zum Beispiel, wenn Ihr Makro eine Zelle C22 Inhalt von „3“ ändert „7“ und die Formatierung von „Allgemein“ auf „Nummer 2 Dezimalstellen), die Liste wäre:
C22 value 3
C22 format general
Beim Spielen dieses wieder in umgekehrter Reihenfolge (mit einem anderen Makro) würde die Änderungen rückgängig machen.
Sie könnten ein ganzes extra Blatt haben die Makro rückgängig machen Informationen wie zu halten:
Step Cell Type Value
---- ---- ----- -------
1 C22 value 3
C22 format general
2...
Es wäre nicht sehr gut integrieren mit dem ‚echten‘ rückgängig macht leider, aber ich glaube nicht, dass es eine Möglichkeit, um das.