Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Worksheet_Change-Ereignis reagiert "fehlerhaft"

Forumthread: Worksheet_Change-Ereignis reagiert "fehlerhaft"

Worksheet_Change-Ereignis reagiert "fehlerhaft"
20.10.2005 08:46:10
Timo
Hi!
Ich habe ein Problem mit dem Worksheet_Change Ereignis. Es reagiert leider nicht immer so, wie man es unbedingt erwartet. Ich habe einen extremen Sonderfall, der sich aber gravierend auswirken kann:
In einem Worksheet_Change-Event entsperre ich das Sheet zunächst und sperre es anschließend wieder. Wenn ich mich in einer Zelle im Eingabe/Editier-Modus befinde und in diesem Moment (ohne vorher die Zelle zu verlassen) das Blatt wechsele (sowohl in derselben Arbeitsmappe, als auch in einem ganz anderen Workbook), wird das Sheet gesperrt, daß ich gerade aktivieren will...
Ich habe jetzt schon mehrere Dinge versucht, um dieses Phänomen zu unterbinden, komme aber auf keine Lösung....
Kann mir jemand helfen?
Danke und Gruß
Timo
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Worksheet_Change-Ereignis reagiert "fehlerhaft"
20.10.2005 09:45:56
Andi
Hi,
vielleicht isses noch zu früh für mich, aber ich kapier das ned so ganz...
"In einem Worksheet_Change-Event entsperre ich das Sheet zunächst [...]"
Wie kann denn in einem (noch) gesperrten sheet überhaupt ein change-Ereignis auftreten?
Reden wir hier vielleicht über Selection-Change?
Vielleicht postest Du mal a bisserl Code...
Schönen Gruß,
Andi

Anzeige
AW: Worksheet_Change-Ereignis reagiert "fehlerhaft"
20.10.2005 11:32:53
Timo
No...
Es geht schon um Worksheet_Change(ByVal Target As Excel.Range). Ich kann in einem gesperrten Sheet ungeschützte Zelle bearbeiten und so das Event auslösen. Will ich aber über ein Makro geschützte Zellbereiche bearbeiten, muß ich das Sheet erst entsperren und anschließend wieder sperren.
Hier mein Code, der aber meiner Meinung nach nicht besonders viel aussagt... In der Funktion "Markierungen_setzen" entsperre ich das Sheet und sperre es anschließend wieder.

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
' Aufruf der Funktion zum Prüfen, ob die Konstellation bei Frage 1 korrekt ist
Gesamtfreigabe_pruefen Worksheets("Freigabe DM").Range("dm_freigabe"), Worksheets("Freigabe DM").Range("dm_freigabe_maßnahmen"), _
Worksheets("Freigabe DM").Range("dm_keine_freigabe"), Target
' Aufruf zum Setzen der farblichen Markierung auf dem Blatt DM
Markierungen_setzen Worksheets("Freigabe DM").Range("dm_kreuz_check"), Worksheets("Freigabe DM").Range("dm_pruefbereich")
End Sub

Anzeige
AW: Worksheet_Change-Ereignis reagiert "fehlerhaft"
20.10.2005 11:45:27
Andi
Hi,
dachte ich's mir doch, dass es zu früh war, auf die freigegebenen Zellen hätte ich auch kommen können. :-)
Wenn Du ein sheet mit
Worksheets("Tabelle1").Protect userinterfaceonly:=True
schützt, dann musst Du den Schutz nicht extra aufheben, um per Makro an der Tabelle rumzufummeln (beachte den Doppelpunkt, sonst funkts nicht...).
Schönen Gruß,
Andi
Anzeige
AW: Worksheet_Change-Ereignis reagiert "fehlerhaft"
21.10.2005 07:29:43
Timo
Okay, ist richtig... Ich will aber meinen Code nicht mehr allzu drastisch abändern. So müßte ich bei jedem Öffnen alle Sheets durchlaufen und mit UserInterfaceOnly sperren.
Außerdem will ich verhindern, daß durch ein "fehlerhaftes" Ausführen von Anweisungen im Worksheet_Change ein Sheet verändert wird, daß sich eigentlich gar nicht im Fokus befindet. Ich habe mir weiterhin Fehler produziert, dadurch, daß ich auf Ranges via "ActiveSheet" zugegriffen habe.
Um so etwas zu vermeiden habe ich den gesamten Block mit folgender If-Abfrage umrahmt:
If ActiveSheet.Name = Target.Parent.Name Then
Das funktioniert auch soweit... Vielen Dank aber für deine Hilfe!
Gruß Timo
Anzeige
AW: Worksheet_Change-Ereignis reagiert "fehlerhaft"
21.10.2005 07:38:02
Timo
ACHTUNG!
Mir ist gerade aufgefallen: Das funktioniert nur bei "Worksheet_Change". Benutzt man das Event "Workbook_SheetChange" muß man die If-Abfrage erweitern... Warum das hierbei nicht funktioniert: Das weiß der Teufel...
If ActiveWorkbook.Name = Target.Parent.Parent.Name Then
Gruß Timo
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken

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