Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Rückgängig nicht möglich

Forumthread: Rückgängig nicht möglich

Rückgängig nicht möglich
03.05.2006 09:39:01
Benno
Hallo Forum
Ich habe eine Datei mit diversen Makros https://www.herber.de/bbs/user/33273.xls
Die Funktion Rückgängig ist nicht möglich, wenn man die Datei mit Makros aktivieren öffnet. Kann dies mit VBA umgangen werden, so dass die Funktion Rückgängig wieder verfügbar ist?
mfg
Benno
Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Rückgängig nicht möglich
03.05.2006 09:41:09
u_
Hallo,
Änderungen durch Makros kann man nicht rückgängig machen.
Gruß
Geist ist geil!
(Dies ist ein allgemeines Statement und nicht an bestimmte Personen gerichtet.)
AW: Rückgängig nicht möglich
03.05.2006 12:32:30
Benno
Hallo
Hier liegt ein Missverständnis vor. Ich will nicht, dass Änderungen durch Makros rückgängig gemacht werden, sondern dass man manuelle Eingaben mit der Funktion rückgängig korrigieren kann. Ich habe andere Excel-Dateien mit Makros, wo diese Funktion nicht deaktiviert ist.
mfg
Benno
Anzeige
AW: Rückgängig nicht möglich
03.05.2006 12:25:36
Reinhard
Hi Benno,
das geht dchon, allerdings nicht Excel sondern du bzw ein Makro muss sich merken was geändert wurde und das dann wiederherstellen.
Ein Beispiel was das Löschen von A1 durch ein Makro wieder rückgegängig macht unter Bearbeiten---Rückgängig machen.
'mit Onrepeat geht es genauso wie mit Onundo.
Option Explicit
Dim Merker
Sub A1_Löschen()
Range("A1") = "Hello World"
Application.OnUndo "Rückg. Mach.", "A1_Wiederherstellen"
Merker = Range("A1")
Range("A1") = ""
End Sub
Sub A1_Wiederherstellen()
Range("A1") = Merker
End Sub

Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
Anzeige
AW: Rückgängig nicht möglich
03.05.2006 13:37:43
Benno
Hallo Rainhard
Danke für den Beitrag; er war für mich für mein aktuelles Problem allerdings nicht hilfreich. Habe um 12.32 einen neuen Beitrag geschrieben. Es geht mir nicht darum Aktionen, die durch ein Makro ausgelöst wurden, rückgängig zu machen sondern manuelle Eingaben.
mfg
Benno
Anzeige
AW: Rückgängig nicht möglich
03.05.2006 13:52:25
u_
Hallo,
hast du Worksheet_Change-Makros oder so laufen, irgendwas im Blatt machen? Dann wird die Rückgängig-History gelöscht. Kannst du nicht vermeiden.
Gruß
Geist ist geil!
(Dies ist ein allgemeines Statement und nicht an bestimmte Personen gerichtet.)
AW: Rückgängig nicht möglich
03.05.2006 14:38:15
Benno
Ja, es hat ein Makro mit Worksheet_Change. Danke für die Info.
mfg
Benno
Anzeige
AW: Rückgängig nicht möglich
05.05.2006 12:06:19
Reinhard
Hi Benno,
dann müsstest du meinen Code in den Worksheet_change-Code einpassen.
Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
AW: Rückgängig nicht möglich
05.05.2006 15:00:08
Benno
Hi Reinhard
Wie müsste ich deinen Code genau einpassen. Mein Code ist:

Private Sub Worksheet_Change(ByVal Target As Range)
If ReadGlobalState = True Then Exit Sub
If Target.Column > 13 Then Exit Sub
If Target.Column = 1 Or Target.Column = 10 Or Target.Column = 11 Or Target.Column = 13 Then
Cells(Target.Row, 15) = Date
Cells(Target.Row, 16) = Time
Cells(Target.Row, 14) = Environ("Username")
Else: Exit Sub
End If
End Sub

mfg
Benno
Anzeige
AW: Rückgängig nicht möglich
05.05.2006 15:52:58
Reinhard
Hi Benno,
ungetestet:
Option Explicit
Public Merker(2)
Private Sub Worksheet_Change(ByVal Target As Range)
If ReadGlobalState = True Then Exit Sub
If Target.Column > 13 Then Exit Sub
If Target.Column = 1 Or Target.Column = 10 Or Target.Column = 11 Or Target.Column = 13 Then
Application.OnUndo "Rückg. Mach.", "Wiederherstellen"
Merker(0) = Cells(Target.Row, 14)
Merker(1) = Cells(Target.Row, 15)
Merker(2) = Cells(Target.Row, 16)
Cells(Target.Row, 15) = Date
Cells(Target.Row, 16) = Time
Cells(Target.Row, 14) = Environ("Username")
End If
End Sub
Sub Wiederherstellen()
Cells(Target.Row, 14) = Merker(0)
Cells(Target.Row, 15) = Merker(1)
Cells(Target.Row, 16) = Merker(2)
End Sub

Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
Anzeige
AW: Rückgängig nicht möglich
05.05.2006 16:01:07
Reinhard
Hi Benno,
habe es getestet, klappt nicht, auch mein Undo-Eintrag wird wohl gelöscht. Als workaround eine Schaltfläche und ihr das makro Wiederherstellen zuweisen.
Option Explicit
Public Merker1, Merker2, Merker3, Merker4
Private Sub Worksheet_Change(ByVal Target As Range)
If ReadGlobalState = True Then Exit Sub
If Target.Column > 13 Then Exit Sub
If Target.Column = 1 Or Target.Column = 10 Or Target.Column = 11 Or Target.Column = 13 Then
Merker1 = Cells(Target.Row, 14)
Merker2 = Cells(Target.Row, 15)
Merker3 = Cells(Target.Row, 16)
Merker4 = Target.Row
Cells(Target.Row, 15) = Date
Cells(Target.Row, 16) = Time
Cells(Target.Row, 14) = Environ("Username")
End If
End Sub
Sub Wiederherstellen()
Cells(Merker4, 14) = Merker1
Cells(Merker4, 15) = Merker2
Cells(Merker4, 16) = Merker3
End Sub

Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
Anzeige
AW: Rückgängig nicht möglich
05.05.2006 17:49:31
Benno
Hi Reinhard
Danke Dir für Deine Hilfe. Es klappt allerdings nicht bei mir. Ich weiss auch gar nicht, ob nicht ein grundsätzliches Missverständnis vorliegt. Ich habe einfach eine Tabelle mit diversen Makros. In diese Tabelle geben die User manuell Daten ein. Für diese Eingaben hätte ich am liebsten die "normale" Rückgängig-Funktion oder wenn nicht anders möglich eine Schaltfläche mit entsprechendem Code. Die Daten in Spalte 14 - 16 sind aber nicht manuell einzugeben. Wenn das Ganze aber zu kompliziert ist, lasse ich es bleiben.
mfg
Benno
Anzeige
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Rückgängig-Funktion in Excel wieder aktivieren


Schritt-für-Schritt-Anleitung

  1. Öffne deine Excel-Datei mit den Makros.

  2. Überprüfe, ob Makros aktiviert sind: Stelle sicher, dass die Makros in Excel aktiviert sind, da dies die Rückgängig-Funktion beeinflussen kann. Wenn du Excel 2007 oder neuer verwendest, gehe zu „Datei“ > „Optionen“ > „Trust Center“ > „Einstellungen für das Trust Center“ > „Makroeinstellungen“ und aktiviere die entsprechenden Optionen.

  3. Füge den VBA-Code ein: Gehe zu „Entwicklertools“ > „Visual Basic“ und füge den folgenden Code in das richtige Modul ein:

    Option Explicit
    Dim Merker As Variant
    
    Sub A1_Löschen()
        Range("A1") = "Hello World"
        Application.OnUndo "Rückg. Mach.", "A1_Wiederherstellen"
        Merker = Range("A1")
        Range("A1") = ""
    End Sub
    
    Sub A1_Wiederherstellen()
        Range("A1") = Merker
    End Sub
  4. Passe den Code an: Wenn du Änderungen in einem Arbeitsblatt vornimmst, füge die Funktionen Application.OnUndo in deinen Worksheet_Change-Code ein, um die Möglichkeit zu schaffen, manuelle Eingaben rückgängig zu machen.

  5. Teste die Rückgängig-Funktion: Führe deine Änderungen durch und teste, ob die Rückgängig-Funktion jetzt wie gewünscht funktioniert.


Häufige Fehler und Lösungen

  • Rückgängig geht nicht: Wenn die Rückgängig-Funktion nicht funktioniert, könnte das daran liegen, dass du ein Makro mit Worksheet_Change verwendest, das die Rückgängig-History löscht. Überprüfe deinen Code und stelle sicher, dass du Application.OnUndo korrekt implementierst.

  • Excel Rückgängig machen nicht möglich: Bei Dateien, die mit Makros gespeichert sind, kann es schwierig sein, die Rückgängig-Funktion zu nutzen. In solchen Fällen könnte es notwendig sein, einen speziellen Undo-Code zu verwenden.


Alternative Methoden

Eine Alternative zur Rückgängig-Funktion ist das Erstellen einer Schaltfläche, die ein Makro zur Wiederherstellung der letzten Eingaben ausführt. So kannst du manuelle Eingaben rückgängig machen, ohne auf die native Rückgängig-Funktion angewiesen zu sein.

Sub Wiederherstellen()
    ' Implementiere hier deinen Wiederherstellungs-Code
End Sub

Füge eine Schaltfläche in dein Arbeitsblatt ein und weise das Makro zu.


Praktische Beispiele

Hier ist ein Beispiel für einen angepassten Worksheet_Change-Code, der die Rückgängig-Funktion für manuelle Eingaben ermöglicht:

Private Sub Worksheet_Change(ByVal Target As Range)
    If ReadGlobalState = True Then Exit Sub
    If Target.Column > 13 Then Exit Sub
    If Target.Column = 1 Or Target.Column = 10 Or Target.Column = 11 Or Target.Column = 13 Then
        Application.OnUndo "Rückg. Mach.", "Wiederherstellen"
        ' Speichere die aktuellen Werte
        Merker1 = Cells(Target.Row, 14)
        Cells(Target.Row, 14) = Environ("Username")
    End If
End Sub

Tipps für Profis

  • Vermeide komplexe Makros: Halte deine Makros einfach, um das Risiko zu minimieren, dass die Rückgängig-Funktion verloren geht.
  • Regelmäßige Sicherungen: Erstelle regelmäßig Sicherungskopien deiner Excel-Dateien, insbesondere wenn du mit umfangreichen Makros arbeitest.
  • Teste deinen Code: Vor der Implementierung in einem Produktivsystem solltest du deinen VBA-Code gründlich testen.

FAQ: Häufige Fragen

1. Warum kann ich in Excel keine Änderungen rückgängig machen? Das liegt häufig daran, dass Änderungen durch ein Makro vorgenommen wurden, welches die Rückgängig-History löscht.

2. Wie kann ich die Rückgängig-Funktion wieder aktivieren? Du musst sicherstellen, dass die Application.OnUndo-Funktion im VBA-Code korrekt verwendet wird, um die Rückgängig-Operationen manuell zu steuern.

3. Funktioniert die Rückgängig-Funktion nur in bestimmten Excel-Dateien? Ja, die Rückgängig-Funktion kann in Excel-Dateien mit aktivierten Makros eingeschränkt sein. In solchen Fällen muss der Code entsprechend angepasst werden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige