Application.UnDo
17.07.2020 16:44:59
Michael
ich habe folgendes Problem:
Ich benutze den Worksheet_Change Trigger um verschieden Bereiche, in denen eigentlich Formeln stehen, auf die Eingabe von Werten zu überprüfen. Damit der Trigger nicht in eine Schleife läuft wird Application.EnableEvents am Anfang auf False gesetzt und am Ende der Prozedur wieder auf True. Mittels Application.undo hole ich kurz die alte Formel der Zelle zurück, um diese abzuspeichern und, nachdem die Prozedur gemacht hat was sie machen soll, wieder statt dem Eingabewert einzusetzen.
Dies funktioniert alles prima. Jetzt komme ich aber zu einer bestimmten Ausnahme.
Unter einer besonderen Bedingung möchte ich, dass der Worksheet_Change Trigger nochmal ausgeführt wird. Genauer gesagt schreibe ich per Code in die Zelle unterhalb der Eingabezelle einen Wert (dort steht auch eine Formel) und jetzt möchte ich, dass der Worksheet_Change Trigger so durchlaufen wird, als hätte der User den Wert per Hand eingegeben. Damit dies geschieht habe ich erst einmal Application.EnableEvents wieder auf true gesetzt. Danach schreibe ich den Wert in die entsprechende Zelle (habe auch schon probiert die Zelle vorher zu selektieren, hat aber nichts gebracht). Als Ergebnis der Eingabe wird der Trigger, so wie ich es erwartet habe, auch ausgeführt, aber wenn der Code an die Stelle mit Application.undo kommt steigt die Prozedur aus. Application.undo kann nicht ausgeführt werden.
Was muss ich machen, damit meine Wertzuweisung (Zelle.value = neuer Wert) wie eine händische Eingabe von Excel gesehen wird und ich die Formel, die vorher in der Zelle stand, mit Application.undo wieder hervorholen kann?
Danke für Eure Tipps
Michael