Excel-VBA: Undo-History verwenden

Hallo Xperten,

ich hab noch 'ne zweite Frage:

Mein Makro schreibt bei Änderung des Inhalts bestimmter Zellen durch den Anwender eine Art Logeintrag in eine andere, fest definierte Zelle.

Dummerweise steht anschließend die Undo-Funktion (Rückgängig) nicht mehr zur Verfügung.

Gibt’s einen Weg, dies zu umgehen? Der Anwender soll das «Undo» trotzdem verwenden können…

Gruß
(Woly)

Hallo Woly,

soweit mir bekannt ist, kannst du für Makros nicht die eingebaute Undo-Funktion verwenden. Du müsstest für dein Makro eine eigene Funktion schreiben, die die erfolgten Änderungen rückgängig macht. Das heisst, du musst die alten Werte irgendwo ablegen und bei Bedarf von dort zurückholen.

Klingt umständlich, ist aber so :frowning:

Viele Grüße,
Daniel

Hallo Daniel,

danke für Deine Antwort - ich schau mal, wie ist das lös’…

Vielleicht hat ja noch jemand eine andere Idee.

Gruß
(Woly)

danke für Deine Antwort - ich schau mal, wie ist das lös’…
Vielleicht hat ja noch jemand eine andere Idee.

Hi Woly,
nein, hat keiner, Daniel hat Recht.
Beispiel, du hast ein Makro was den Inhalt von A1 löscht. Dann musst du in dem Makro den Inhalt von A1 sichern, A1 löschen und die Wiederherstellung von A1 in die UndoListe eintragen.
Gruß
Reinhard

Hallo Reinhard,

…die Wiederherstellung von A1 in die UndoListe eintragen…

das geht? Ich kann (manuell?) etwas in die Undo-Liste eintragen? Wie denn?

Gruß
(Woly)

…die Wiederherstellung von A1 in die UndoListe eintragen…

das geht? Ich kann (manuell?) etwas in die Undo-Liste
eintragen? Wie denn?

Hi Woly,
mit Onrepeat geht es genauso wie mit Onundo.

Option Explicit
Dim Merker
Sub A1\_Löschen()
Range("A1") = "Hello World"
Application.OnUndo "A1 wiederherstellen", "A1\_Wiederherstellen"
Merker = Range("A1")
Range("A1") = ""
End Sub

Sub A1\_Wiederherstellen()
Range("A1") = Merker
End Sub

Gruß
Reinhard

Okay, danke…

schau ich mir mal an!

Gruß
(Woly)