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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top