Microsoft Excel

Herbers Excel/VBA-Archiv

If Rückgängig Then... | Herbers Excel-Forum


Betrifft: If Rückgängig Then... von: Jörg-HH
Geschrieben am: 20.11.2009 21:39:08

Guten Abend zusammen,

es sollen von einer Tabelle Änderungen erkannt werden. Dazu lasse ich einfach eine Eins in eine Zelle schreiben, in der ansonsten eine Null steht:

Private Sub Worksheet_Change(ByVal Target As Range)
  If Tabelle103.Range("A1").Value = 0 Then Tabelle103.Range("A1").Value = 1
End Sub
Nun ist die Frage, was passiert, wenn der User seine Eingabe(n) bis zur ersten Aktion wieder rückgängig macht. Dann sollte die Eins wieder zu einer Null werden. Gut... rückgängig heißt Undo, aber ansonsten schweigt sich die Hilfe aus, und der Recorder hilft auch nicht weiter.
Der kleine Codeabschnitt da oben müßte also etwa so weitergehen:

If Irgendwas komplett wieder Undo gemacht wurde, Then Tabelle103.Range("A1").Value = 0

Wie muß das denn auf VBAisch heißen...?

Grüße - Jörg

  

Betrifft: AW: If Rückgängig Then... von: Björn B.
Geschrieben am: 20.11.2009 23:22:08

Hallo Jörg,

ich glaube nicht, dass das funktioniert.

 wenn der User seine Eingabe(n) bis zur ersten Aktion wieder rückgängig macht. 

Selbst das funktioniert nicht mit Undo, da Excel sich nur die letzten 16 Aktionen merkt und auch nur diese auf diesem Weg rückgängig machen kann.
Zumindest bei meinem Office 2002, müsste bei 2003 aber auch so sein, 2007 weiß ich nicht.

Somit geht das mit Excel eigenen Mitteln nicht.
Du müsstest quasi protokollieren, was geändert wird, und dann nachher prüfen, ob alles wieder rückgängig gemacht wurde.
Oder Du kopierst das Blatt vor der Änderung, und am Ende vergleichst du die beiden Blätter (kann ja auch ausgeblendet bzw, im Hintergrund sein).

Hoffe, das hilft dir ein bisschen weiter.

Gruß
Björn B.


  

Betrifft: protokollieren... von: Jörg-HH
Geschrieben am: 21.11.2009 20:07:54

Hallo Björn,
danke für deine Gedanken. Vielleicht hab ich bei meiner Frage nicht zuende gedacht... das mit den 16 Schritten weiß ich eigentlich, und die hat man ja recht schnell beisammen.

Wenn das Blatt aktiviert wird, werden alle Formeln einem anderen Blatt gebunkert, weil man in dem Blatt was herumprobieren können soll. Wird tatsächlich herumprobiert (= Change), wird in der erwähnten Null/Eins-Zelle eine Eins gesetzt. Bei Schließen der Datei wird im Falle "Eins" gefragt, ob die Änderungen behalten oder der Ursprung zurückgeschrieben werden soll.

Wenn nun aber der Probierer rückgängig macht, bleibt die Eins erhalten, und die Frage wird ausgelöst, auch wenn es keine Änderung mehr gibt. Das ist sachlich nicht schlimm, weil Alt- und Neuversion ja identisch sind. Aber es wird den Benutzer irritieren...

Du schreibst protokollieren, was geändert wird, und dann nachher prüfen, ob alles wieder rückgängig gemacht wurde - wie macht man denn sowas?
(Vielleicht ist das ja auch etwas zuviel Aufwand für ein relativ kleines Problemchen, mit dem man leben könnte)

Grüße - Jörg


Beiträge aus den Excel-Beispielen zum Thema "If Rückgängig Then..."