Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1904to1908
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

Change-Event Freezes ...

Change-Event Freezes ...
26.10.2022 23:36:36
Daniel
Guten Abend zusammen,
Meine ursprüngliche Idee: Wenn im Auswahlprozess von DropDowns (SpalterA) ein "nein" oder Logikverletzungen aufrteten, springt der Target.Value auf den vorherigen Zellwert zurück (aus Zwischenspeichervariable). Nun kommt es leider zu willkürlichen Freezes des gesamten Tabellenblatts. Das Blatt bleibt stehen, man kann nicht mehr scrollen aber Excel funktioniert noch. Direkt reproduzierbar ist der Fehler nicht, sondern tritt mal früh oder später ein. Ich vermute hier Kollisionen zwischen dem change_select und change_event Strings, die wiederrum events auslösen. Zudem nutze ich die GetMoreSpeed-Prozedur; heißt Events und ScreeUpdates werden bei rechenlastigen Subs gezielt an und abgeschaltet. Hier die Lightversion der Projektmappe: https://www.herber.de/bbs/user/155880.xlsm
Freue mich wie immer auf Eure Gedanken dazu.
Viele Grüße Daniel

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

Betreff
Datum
Anwender
Anzeige
Application.EnableEvents = False|True genutzt?
27.10.2022 04:17:38
lupo1
AW: Application.EnableEvents = False|True genutzt?
27.10.2022 07:56:10
Daniel
Moin Lupo,
klaro ... jedoch sind in der verlinkten Mappe meine diversen Platzierungsversuche mit EventsEnable herausgenommen, damit der Fehler deutlich wird. Ungeachtet dessen sind schon mehrere Stunden vergangen, damit weiterzukommen - leider ohne Erfolg. Die Mappe arbeitet grob nach dem Prinzip:
Change Select
merkt sich jeden Zelllinhalt beim Anklicken in Variable M
Ende Change_Select
Change Event
- alle Events aus
- Frage n. Ausführcode für Zelländerung X? + Zeige M bei No oder Logikverletzung
- Frage n. Ausführcode für Zelländerung Y? + Zeige M bei No oder Logikverletzung
- Frage n. Ausführcode für Zelländerung Z? + Zeige M bei No oder Logikverletzung
- alle Events an
Ende Change Event
M kann natürlich X, Y und Z annehmen ... und das ist sporadisch ok, und manchmal in einen Freeze mündend ...
Viele Grüße
Daniel
Anzeige
AW: Application.EnableEvents = False|True genutzt?
27.10.2022 14:18:33
Luschi
Hallo Daniel,
Du hebst die am Anfang mit 'Call iTD_GetMoreSpeed(1)' gemachten Einstellungen im Nein-Fall teilweise auf:
Application.ScreenUpdating = True
Application.EnableEvents = True
obwohl die Prozedur für diesen Fall noch nicht am Ende ist. Es passiert dann zwar nichts Entscheidendes mehr, aber ich denke, das ist zu zeitig; zum Schluß kommt doch sowieso noch: Call iTD_GetMoreSpeed(0)
Vor dem Klicken auf dem Nein-Button wurden aber in der Routine 'iTD_Calc_RealTimeRow() umfangreiche Zelländerungen mittels Formeleintragungen durchgeführt. Wenn diese Änderungen aber noch nicht abgeschlossen waren und Du setzt 'Application.EnableEvents = True', dann beginnt das Worksheet_Change()-Event an zu routieren.
Sicher nur 1 Vermutung aber für micht ist dieses vorzeitigen aufheben zu früh und sicher nicht nötig.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Application.EnableEvents = False|True genutzt?
27.10.2022 16:59:13
Daniel
Hi Luschi,
habe es zwischenzeitlich selbst lösen können, indem ich mich mit Sprungmarken auseinanandersetzte. Damit konnte ich die Last-Schleifen gezielt je nach Ereignis eine Ausfahrt verpassen, so dass nun alles stabil und flott durchläuft. Hier die Lösung gem. Denkansatz für Interessenten:

Option Explicit
Public Merker_TBM
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count = 1 Then
If Target.Column 
Danke und viele Grüße
Daniel
AW: Application.EnableEvents = False|True genutzt?
28.10.2022 06:16:55
Luschi
Hallo Daniel,
es ist also so, wie ich vermutet habe: das vorzeitige Setzen von 'Application.EnableEvents = True' hat die beobachtete Situation hervorgerufen. eigentlich sind Sprungmarkenbefehle hier nicht erforderlich, da die vorhandenen 'If...Else .. Then'- Konstrukte das alles schon regelten, nur der o.g. Vba-Befehl erfolgte an der falschen Stelle.
Ich verzichte i.R auf Sprungmarken, denn die erzeugen das Gefühl von Spagetti-Code nach dem Grundsatz: wenn man nicht mehr weiter weiß, bildet man 1 Arbeitskreis.
Gruß von Luschi
aus klein-Paris
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige