Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1956to1960
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 Ereignis bei UserForm_Initialize Ereignis unterbinden

Change Ereignis bei UserForm_Initialize Ereignis unterbinden
08.01.2024 19:41:44
Frank
Guten Abend an Alle,

ich habe eine UserForm. Auf dieser UserForm kann man das Produkt und verschiedene andere Komponenten durch mehrere ComboBoxen definieren. Jedes Mal wenn man einer dieser ComboBoxen ausführt führt das zur Neuberechnung. Des Weiteren wird bei jedem Change Ereignis das z.B. zuletzt verwendete Produkt abgelegt, so dass ich beim Neustart der UserForm mir die Daten aus Excel einlese, quasi speichere ich dadurch die zuletzt eingestellten Parameter. Wenn ich nun die UserForm durch meinen Button in Excel starte, dann führt das dazu, dass die gesamte Berechnung 5 Mal durchlaufen wird, weil beim UserForm_Initialize Ereignis die Werte aus den Zellen eingelesen werden und es dadurch bei jeder ComboBox zu einem Change Ereignis führt. Hat jemand eine galante Idee wie ich das umgehen könnte? Danach funktioniert das Programm gut, nur der Start dauert aktuell eben 5 Mal so lange. Ich habe mir ein kleines Logging im Direktbereich geschrieben, so dass ich es sehen kann... Vielleicht hat jemand eine Idee.

Vielen Dank und viele Grüße
Frank

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

Betreff
Datum
Anwender
Anzeige
AW: Change Ereignis bei UserForm_Initialize Ereignis unterbinden
08.01.2024 19:54:04
daniel
Hi
Variante 1)
prüfen, ob das Change-Event wirklich benötigt wird oder ob andere Events wie Click, AfterUpdate, Exit, usw welche zwar auch auf Anwendereingaben reagieren aber nicht auf jede beliebige Änderung, nicht geeigneter sind

Variante 2)
lege eine Modulweit gültige Variable an (bspw EventsAus als Boolean) und setze diese im Intitialize-Event zu Beginn auf TRUE und am Ende wieder auf FALSE
füge dann in jedes Eventmakro, bei dem die automatische ausführung verhindert werden soll, am Anfang diese Zeile ein:
If EventsAus Then Exit Sub
dann wird das Event zwar gestartet, aber nicht weiter ausgeführt sondern sofort abgebrochen, womit es keinen Einfluss auf die Laufzeit haben sollte.

Die Funktion, Events auszuschalten (Application.EnableEvents = False) gilt nur für die Events der Mappe und der Tabellenblätter, aber nicht für die Events der Userform.

Gruß Daniel
Anzeige
AW: Change Ereignis bei UserForm_Initialize Ereignis unterbinden
08.01.2024 20:32:48
Frank
Guten Abend Daniel,

vielen lieben Dank für deine hilfreichen Erläuterungen. An Variante 2 hatte ich auch gedacht, aber ich dachte, dass es eine "edlere" Lösung gibt...

Ich schaue mir gerade die verschiedenen Ereignisse an... (wie Enter, Error, Exit)... Die habe ich noch nie verwendet und ich frage mich gerade wann dieses Ereignis ausgelöst wird.

Ich denke, dass ich mit Variante 2 leben kann :-). Wobei mich die erste auch interessieren würde.

Vielen lieben Dank Daniel.
Viele Grüße
Frank
AW: Change Ereignis bei UserForm_Initialize Ereignis unterbinden
08.01.2024 22:00:42
Daniel
Es gibt im Internet die Supportseiten von Microsoft, wo die einzelnen Objekte beschrieben werden.
die Taste F1 führt dich aus dem VBA-Editor dorthin.
Gruß Daniel
Anzeige
AW: Change Ereignis bei UserForm_Initialize Ereignis unterbinden
09.01.2024 09:16:29
Frank
Guten Morgen Daniel,

ich habe danach gesucht. Also ich war auf der Online Hilfe von Microsoft, aber ich habe dort nichts gefunden. Also das Click, Change oder bspw. Mouseover Ereignis kann ich mir ableiten. Aber Error, Exit bspw. nicht. Ich habe die Online Hilfe, die Offline Hilfe in Excel 2010 und Google befragt -->checkbox1_Error und habe dazu nichts gefunden.

Viele Grüße
Frank
AW: Change Ereignis bei UserForm_Initialize Ereignis unterbinden
09.01.2024 13:00:36
daniel
Hi
die Events werden hier erklärt.
Achtung, die Begriffe sind teilweise übersetzt (Change = Änderung)

https://learn.microsoft.com/de-de/office/vba/language/reference/user-interface-help/events-microsoft-forms

ich vermute mal, dass das die Infos für die ActiveX-Controls sind.
die Userform-Controls sind größtenteils gleich, es kann aber Abweichungen geben.
in der Regel ist das AfterUpdate-Event das geeignete, um auf Anwendereingaben zu reagieren.

Im Zweifelsfall probiert man es aus, dh man erstellt das Eventmakro und baut sich ein Hinweissignal ein, dass man merkt, wann es ausgeführt wird (Beep, Messagebox, Debug.Print). so kann man dann selber testen, wann und in welcher Reihenfolge die Events ausgeführt werden.

Gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige