Live-Forum - Die aktuellen Beiträge
Datum
Titel
19.04.2024 12:23:24
19.04.2024 11:45:34
Anzeige
Archiv - Navigation
1084to1088
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Undo nur Werte

Undo nur Werte
Oliver
Hallo zusammen,
kann man die Undo-Funktion nur auf Werteänderungen beschränken, so dass geänderte Zellinhalte zurückgenommen werden, aber geändert Formate nicht?
MfG
Oliver

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Nein - Undo arbeitet schrittweise
26.06.2009 12:45:35
NoNet
Hallo Oliver,
da UnDo schrittweise arbeitet und dazu auch Formatänderungen gehören, ist das leider nicht machbar !
Gruß, NoNet
AW: Nein - Undo arbeitet schrittweise
26.06.2009 12:48:16
Oliver
Hallo,
schade!
Ich möchte bei einer Wertänderung den alten und neuen Wert in zwei Variablen packen.
Wie könnte so etwas aussehen?
MfG
Oliver
Wert zuvor in globale Variable speichern
26.06.2009 12:57:40
NoNet
Hallo Oliver, dazu musst Du für einen definierten Bereich bereits zu Beginn alle Werte in eine globale Variable speichern und dann im Worksheet_Change() den aktuellen Wert in diese Variable speichern.
In einer eigenen UnDo-Routine kannst Du dann den gespeicherten Wert wieder zurück in die Zelle schreiben !
Allerdings funktioniert das wirklich nur für ein paar wenige Zellen, da ansonsten der Speciherbedarf enorm steigt...
Gruß, NoNet
Anzeige
AW: Nein - Undo arbeitet schrittweise
26.06.2009 14:14:00
Kawensmann
Hallo,
hier eine Möglichkeit, die Änderungen zu speichern, das Wiederherstellen ist aber mit "VBA gut" wohl kein Problem:
In ein Klassenmodul:
Klassenmodul: clsEvents
Option Explicit 
 
Public WithEvents wshAny As Worksheet 
 
Private Sub wshAny_Change(ByVal Target As Range) 
    Dim zeile As Integer 
    Dim Blattname As String 
    Dim ws As Worksheet 
    On Error Resume Next 
    Set ws = Worksheets("Changes") 
 
    Blattname = ActiveSheet.Name 
     
    Application.ScreenUpdating = False 
    Application.EnableEvents = False 
     
    zeile = Worksheets("Changes").UsedRange.Rows.Count + 1 
 
    With ws 
        'Worksheets("Aenderungen").Unprotect 
        .Cells(zeile, 1).Value = Now 
        .Cells(zeile, 2).Value = ActiveSheet.Name 
        .Cells(zeile, 3).Value = Target.Address 
        .Cells(zeile, 4).Value = AlterWert 
        .Cells(zeile, 5).Value = Target.Value 
        'Worksheets("Aenderungen").Protect 
    End With 
     
    Application.ScreenUpdating = True 
    Application.EnableEvents = True 
 
End Sub 
 
Private Sub wshAny_SelectionChange(ByVal Target As Range) 
    AlterWert = Target.Value 
End Sub 
 


In ein normales Modul:
Modul: Modul1

Option Explicit 
 
Public AppObject As New clsEvents 
Public AlterWert 
 
 
  
 
 


in die Module der Tabellen, die überwacht werden sollen:

Option Explicit

Private Sub Worksheet_Activate()
      Set AppObject.wshAny = ActiveSheet

End Sub

Private Sub Worksheet_Deactivate()
 Set AppObject.wshAny = Nothing
End Sub

Code eingefügt mit VBA in HTML 2.0.0.3size>
und natürlich ein Tabellenblatt namens "Changes" einfügen.
Gruß
Kawensmann

Anzeige
AW: Nein - Undo arbeitet schrittweise
26.06.2009 14:22:22
Kawensmann
Habe den (sehr alten Code) für das Klassenmodul noch mal etwas aufgeräumt:
Klassenmodul clsEvents
Option Explicit 
 
Public WithEvents wshAny As Worksheet 
 
Private Sub wshAny_Change(ByVal Target As Range) 
 Dim zeile As Integer 
 Dim ws As Worksheet 
 On Error Resume Next 
 Set ws = Worksheets("Changes") 
 
 Application.ScreenUpdating = False 
 Application.EnableEvents = False 
 
 With ws 
 zeile = .UsedRange.Rows.Count + 1 
 '.Unprotect 
 .Cells(zeile, 1).Value = Now 
 .Cells(zeile, 2).Value = ActiveSheet.Name 
 .Cells(zeile, 3).Value = Target.Address 
 .Cells(zeile, 4).Value = AlterWert 
 .Cells(zeile, 5).Value = Target.Value 
 '.Protect 
 End With 
 
 Application.ScreenUpdating = True 
 Application.EnableEvents = True 
 
End Sub 
 
Private Sub wshAny_SelectionChange(ByVal Target As Range) 
 AlterWert = Target.Value 
End Sub 
 


[size=8]Code eingefügt mit [url=http://vbahtml.origo.ethz.ch] VBA in HTML 2.0.0.3[/url][/size]

Anzeige
AW: Nein - Undo arbeitet schrittweise
26.06.2009 14:25:43
Kawensmann
Nimm für die Variable "zeile" besser den Typ Long!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige