Ich erstelle ein VSTO-Excel-Add-In, das die Werte mehrerer Zellen manipuliert. Ich möchte dem Benutzer erlauben, die Änderungen rückgängig zu machen, die vom Add-In über die Standard-Excel-Funktionen erstellt wurden. Ich bevorzuge die Verwendung von VBA.
Ist das möglich? Wenn ja, wie?
Noch eine Frage: Ist es möglich, den bestehenden Undo / Redo-Stack zu untersuchen?
Sie haben nicht erwähnt, welche Version der Excel / .NET / VSTO-Laufzeit Sie verwenden möchten, aber das spielt keine Rolle:]
Benutzerdefiniertes Rückgängigmachen kann nicht ohne VBA-Injektion ausgeführt werden. In diesem Fall müssen Sie eine Methode zum Rückgängigmachen von Aktionen rückgängig machen, indem Sie eine Kompensation (z. B. umgekehrte Operationen) oder einen gespeicherten Status wiederherstellen.
Ich weiß, dass Sie VBA vermeiden wollen, aber wie andere bereits erwähnt haben, ist es nicht wirklich möglich, das Undo
zu erhalten.
Hier ist ein VBA-Beispiel, das die vorhandene Auswahl als benutzerdefinierten Datentyp beibehält, damit sie später rückgängig gemacht werden kann.
%Vor%Sie können Operationen zum Stapel hinzufügen, indem Sie Folgendes verwenden:
%Vor%Dabei ist Text der Text, der mit dem Befehl Rückgängig angezeigt wird (Menü Bearbeiten) und Prozedurname ist der Name eines Ihrer Subs. Sie können Operationen auch programmatisch rückgängig machen, indem Sie Folgendes verwenden:
%Vor%Ich glaube nicht, dass es möglich ist, auf bestehende Rückgängig-Operationen zuzugreifen; zumindest habe ich noch nie von denen gehört. Es kann eine Bibliothek geben, auf die Sie online zugreifen können, um dies zu ermöglichen.
Hoffe, das hilft.