Herbers Excel-Forum - das Archiv

Abhängigkeiten bei Steuerelement-Ereignissen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Abhängigkeiten bei Steuerelement-Ereignissen
von: Steffen

Geschrieben am: 20.12.2006 10:30:04
Hallo Forum,
ich habe folgendes Problem:
ich habe Excel als Datenbank "missbraucht" und ein UserForm erstellt, das diese Daten filtern und anzeigen soll. Soweit auch kein Problem.
Zum Filtern stehen dem Benutzer 4 Combo-Boxen zur Verfügung: Datum, Kategorie, Thema und Status. Der Benutzer soll filtern entweder nach Datum ODER nach Kategorie ODER nach Thema UND zusätzlich nach dem Status.
Nachdem der Benutzer beispielsweise das Datum aus der Combo ausgewählt hat, soll sich sofort das Form aktualisieren, also habe ich die zugehörige Funktion namens DatenAktualisieren(), die sich um das Datenmanagement kümmert an das Ereignis "onChange" bzw. "AfterUpdate" geknüpft.
Nun kommt das Problem: Da die Combos logisch voneinander abhängen, muß ich nach Benutzerauswahl in einer Combo die angezeigten Elemente der anderen Combos ändern. Dadurch wird aber wieder das Ereignis onChange ausgelöst, was dafür sorgt, daß sich die Funktion DatenAktualisieren() rekursiv wieder aufruft.
Bsp: Der Benutzer wählt eine bestimmte Kategorie im cmb_Kat aus. Da Datum, Kategorie und Thema mit ODER verknüpft sind, muß ich in diesem Fall also die Werte von cmb_Datum und cmb_Thema auf "-alle-" setzen (diesen Eintrag habe ich vorher natürlich eingefügt). Nach der Auswahl des Benutzers wird über onChange des Combos die Funktion DatenAktualisieren() aufgerufen. Diese Funktion setzt nun die Combos Datum und Thema auf "-alle-". Hierbei wird aber wieder das onChange Ereignis ausgelöst, was die Funktion DatenAktualisieren() erneut aufruft.
Das ist natürlich nicht gewollt. Ich habe auch versucht, andere Ereignisse wie AfterUpdate zu benutzen, ohne Erfolg.
Wer hat eine Idee, wie ich aus diesem "Schlamassel" wieder herauskomme...?
Vielen Dank und Gruß
Steffen
Bild

Betrifft: AW: Abhängigkeiten bei Steuerelement-Ereignissen
von: Uduuh

Geschrieben am: 20.12.2006 12:56:51
Hallo,
definiere eine globale Variable z.b. blnCode as boolean
Die fragst du in den Change-Ereignissen ab bzw setzt sie
etwa so:
Private Sub combo1_change()
if  not blnCode Then
blnCode=true
'weiterer Code
blncode=false
end if
End Sub

Private Sub combo2_change()
if  not blnCode Then
blnCode=true
'weiterer Code
blncode=false
end if
End Sub

Somit kannst du feststellen, ob das Changeereignis durch Code oder den User ausgelöst wurde.
Gruß aus’m Pott
Udo

Bild

Betrifft: AW: Abhängigkeiten bei Steuerelement-Ereignissen
von: Steffen
Geschrieben am: 20.12.2006 16:41:12
Hallo Udo,
genial einfach und anstandslos wirkungsvoll. Hätte ich selbst drauf kommen müssen... peinlich!
Herzlichen Dank dafür und Grüße aus Thüringen,
Steffen
 Bild