erst einmal - ich bin neu hier, habe hier schon oft irteressante Hinweise gefunden - Danke für das Forum.
Arbeite das erste mal VBA-UserForm, komme aber aufgrund allgemeiner Programmiererfahrung ganz gut zu recht. (es dauert halt nur seine Zeit - für jedes Ereignis genau herauszufinden, wann welches ausgelöst wird - zumindest ist die Hilfe zu meinem Excel 2000 nicht so, dass es z.B. für einem ComboBox eine Liste gibt welche Eigenschaften und Methoden ein Change-Ereignis auslösen, oft finde ich, nachdem ich ein Problem schon beim Testen eingegrenzt habe, die Info noch zu der Beschreibung der jeweiligen Eigenschaft/Methode eben aber nicht in einer Übersicht)
Konstellation:
Kombobox in die auch im Textfeld eine Eingabe eines neuen Wertes möglich sein soll.
Im Change-Ereignis:
Abhängig von der Auswahl in der Kombobox
wenn ein vorgegebener Wert aus der Liste ausgewählt wird,
fülle ich abhängige Komboboxen mit den entsprechenden Auswahlwerten
(ich brauche also das Change-Ereignis)
wenn ein neuer Wert in den Textbereich der Kombobox eingegeben wird
lösche ich abhängige Komboboxen mit den entsprechenden Auswahlwerten
nach ersten initalisieren(Füllen der Box mit Werten) der Kombobox,
wird der erste Wert des ersten Eintrages ausgewählt und im Textfeld angezeigt
(ListIndex=0) - dabei wird auch ein Change ausgelöst, was mir nur recht ist,
da dadurch die abhängigen Komboboxen mit entsprechenden Werten gefüllt werden.
Mein Problem
=========
Wenn der Anwender in dem Textfeld eine Eingabe macht - ev. auch nur ändert
(Textfeld ist ja vorbelegt) wird bei der Eingabe jedes Buchstabens ein separates
combobox_Change ausgelöst.
Nichts dagegen, daß ein change ausgelöst wird .
Das habe ich auch nur festgestellt, weil ich ein Stop zum Testen in die Ereignisse
gesetzt hatte - außderdem, auch zum Testen jeden Ereignisaufruf in eine Datei
Protokolliere(dazu hatte ich übrigens so glaube ich, ein Beispiel aus diesem Forum
verwendet)
Ich möchte eigentlich, daß das Change-Ereignis nur 1x wenn das Feld verlassen wird
(auf jede Art - mit Maus oder Tastatur in das nächste Feld oder mit der Maus ein
beliebiger anderer Button) ausgelöst wird.
Frage
====
habt ihr auch die Erfahrung gemacht, daß bei jedem einzelnen buchstaben ein
Change-Ereignis ausgelöst wird?
Lösungsansatz und F r a g e hierzu
========================
Ich überlege, ob ich nun das Userform zum xten Male umbaue.
1. Ansatz
- Das Change Ereignis ganz rausnehme.
- Das 1. initialisieren der abhängigen Felder per Upro im initialize des Userforms mache.
- Mir für jede weitere Anpassung der Inhalte der abhängigen Felder an den
aktuelle Inhalt der Kombobox ein anderes Ereignis suche, das nur ausgelöst
wird, wenn ich das Feld verlasse - ich meine irgendwo zwischen den Zeilen in
der Hilfe oder bei der Internetrecherche irgendein Ereignis gesehen zu haben,
w e i s j e m a n d w e l c h e s E r e i g n i s ich hierfür verwenden könnte?
2. Ansatz - weil dann Change benötigt wird nicht hilfreich
Als weitere Möglichkeit könnte ich die abhängigen Felder auch erst jeweil
beim Eintritt in die Felder initialisieren - aber dann müßte ich die Felder zumindest
löschen, wenn sich die Auswahl im führenden Feld ändert? also bräuchte
doch wieder das Change-Ereignis oder muß dies beim Ereignis des verlassen
des führenden Feldes machen - bringt keine Verbesserung zu Ansatz 1.
Danke für Euere Ideen und Erfahrungen.
weitere Fragen am Rande:
- wie zuverlässig ist es mit Ereignissen zu arbeiten, wenn man Wert auf
Release-Festigkeit legt. Verhalten sich die Ereignisse in den folgenden
Releases gleich.
- wie weit kann ich ein excel-Ereignis-Formular auch später mal in andere
Programmiersprachen/Betriebssyste übernehmen, ist es irgendwo
einheitlich definiert, wann z.B. ein Change-Ereignis einer Combobox
ausgelöst wird
(z.B. möchte ich später mit
OpenOffice arbeiten, dann müßte ich das ganze anpassen
OpenOffice-Version von Linux ist auch in der Planung, dann
verwende ich das OpenOffice dort in der Hoffnung daß Windows Open Office
und Linux Open Office weitgehend kompatibel sind - möglichst auch im
Makro-Bereich oder zumindes6, falls die Prammiersprache abweicht, zumindest
so ähnlich sind, daß man so ein Userform umsetzen kann, ohne nochmal
zu überlegen, wann nun welches Ereignis ausgelöst wird und wann nicht)
Java-Kenntnisse zu erweitern steht auch noch im Programm - fast jede
Programmiersprache verwendet ja irgendeine Benutzeroberfläche
die so eine Art UserForm mit der Möglichkeit von Komboboxen zur
Verfügung stellt. (Nur wenn da jedes die Ereignisbehandlung anders
verwendet, verwechselt man das ja sehr leicht - es macht Programme
auch nicht gerade übersichtlich, wenn das immer anders ist)
ja und dann nochmal mit ein paar anderen Sprachen experimentieren
C#, Rubi ...?
Nochmals Danke für das lesen.
Ps: Natürlich habe ich im Forum recherchiert - bei der 5. Seite der Suche nach
"Combobox Change" habe ich dann aufgegeben - weil mir meine Frage zu
differenziert erschien - ich hoffe dass mein Problem nicht ev. Seiten später
behandelt wird.
Gruß
Monika aus dem schönen München