Laufzeitfehler1004
13.02.2017 11:22:36
Jens
ich habe ein Blatt, auf dem (1.)Änderungen nicht möglich sein sollen, aber die Zellen sollen (2.) anklickbar sein um eine "Worksheet_BeforeDoubleClick"-Routine zu starten und um (3.) die Zellposition feststellbar zu machen, damit ein anklickbares Makro damit weiterarbeiten/weiterrechnen kann.
Wegen den Punkten 2 und 3 erscheint mir ein Blattschutz nicht möglich.
Das Änderungen nicht möglich sind bzw. wieder rückgängig gemacht werden habe ich durch
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
End Sub
erreicht.
Im Grunde bin ich glücklich, denn nun werden tatsächlich Änderungen rückgängig gemacht aber man kann trotzdem die Zellen anklicken, um in der o.g. "Worksheet_BeforeDoubleClick"-Routine eine Userform aufrufen zu können.
Man muss ja immer davon ausgehen, dass es User gibt, die irgendwelche Schwächen im Code suchen und der liegt hier leider im folgenden:
Wenn nun jemand eine Zelle ändert, aber diese noch nicht verläßt, wodruch die Change Eigenschaft noch nicht ausgelöst wurde und (!) nun durch einen Klick auf den eingefügten OptionButton das Makro startet, wirft XL in o.g. "Application.Undo" Zeile einen Laufzeitfehler 1004 aus.
Ich verstehe ja, dass XL nun ein Problem hat, da die Worksheets-Change Eigenschaft noch nicht ausgeführt wurde (sprich die Änderunge rückgängig gemacht wurde) und durch das Drücken des OptionButtons gleichzeitig ein Makro gestartet werden soll, aber ich habe keine Idee, wie ich das umgehen kann.
Irgendwelche Tipps?
Vielen Dank im vorraus!
Jens