Undo / Rückgängig nach Makroausführung
18.08.2020 11:47:04
Sabrina
ich nutze ein "Lineal" um meine enorm großen Listen leichter optisch durchgehen zu können. Wenn ich nun aber in einer Zelle etwas ändere und mit Enter oder Mausklick in eine andere Zelle gehe, wird das Lineal-Makro durch das Bewegen in eine andere Zelle ausgeführt und dadurch kann ich die Änderung nicht mehr rückgängig machen.
Es wäre wichtig, dass ich das was zuvor in der Zelle stand wiederherstellen kann, da ich manchmal nur teste, ob sich die berechneten Werte ändern durch eine andere Eingabe.
Mir sind auch schon Lösungen dazu eingefallen, aber es scheitert an der Ausführung, bzw. dem Code.
Variante 1: Man ändert das Makro so, dass durch Enter keine neue Zelle ausgewählt wird, aber die weiterführenden Berechnungen durch die Zelländerung stattfinden können. Man könnte dann das Markieren einer Zelle nur durch Mausklick und Pfeiltasten erlauben, damit das Makro wieder ausgeführt werden kann.
Variante 2: Exel merkt sich den letzten ausgeführten Schritt (was immer unterschiedlich sein kann) bevor das Makro ausgeführt wird und man schreibt dann ein Makro, um den Zustand vor Makroausführung wiederherzustellen.
Variante 3: Man erzeugt vor der Ausführung des Makros ein Backup, das vor jeder erneuten Anwendung des Makros überspeichert wird. Das wird das Programm wahnsinnig verlangsamen. Alleine um die Datei normal abzuspeichern dauert es mehrere Sekunden, da die Datei aufgrund vieler Berechnungen und dem Lineal Makro sehr groß ist (127 MB)
Hier das Lineal-Makro:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveSheet.Unprotect ("1")
If Target.Cells.Count > 1 Then Exit Sub
Application.ScreenUpdating = False
' Clear the color of all the cells
Cells.Interior.ColorIndex = 0
With Target
' Highlight the entire row and column that contain the active cell
.EntireRow.Interior.ColorIndex = 38
.EntireColumn.Interior.ColorIndex = 38
End With
Application.ScreenUpdating = True
ActiveSheet.Protect ("1")
End Sub