Eigenartiges Comboboxverhalten
11.09.2014 09:03:51
Michael
mein Problem mit den API-Funktionen konnte ich inzwischen lösen - war ein Problem an ganz anderer Stelle. Egal!
Meine neue Frage betrifft ein Problem, wo ich seit Stunden einfach nicht schlau werde:
Ich habe eine Combobox die nach der Überprüfung von bestimmten Einträgen in einer Liste mit verschiedenen Inhalten befüllt wird (z.B. wenn ein Eintrag in der Liste bereits vorhanden ist, darf er in der ComboBox nicht mehr aufscheinen).
Das funktioniert auch gut. Ich steuere die Box zunächst mit dem Ereignis DropButtonClick an und führe dann die Überprüfung und Neubefüllung der Box aus.
Wähle ich nun ein Element der Box aus löst das logischerweise ein Change-Ereignis aus.
Und jetzt das Eigenartige:
Der ausgewählte Eintrag wird mir in der Box nach Schließen des Auswahlfensters nicht angezeigt. Stelle ich jedoch eine MsgBox an den Beginn des Events zeigt er mir alles perfekt an. Wie kann eine MsgBox entscheidend sein, ob in einer Combobox ein Inhalt aufscheint oder nicht?
Hier der Code dazu:
Private Sub ComboBox1_Fill()
LangKat ("ZAHLUNGSART")
ZACount1 = 0
ZACount2 = 0
'Änderung bei vorhandener Barzahlung
For i = 0 To Listbox1.ListCount - 1
If Me.Listbox1.List(i, 1) = Worksheets("Language").Cells(LangKatRow + 5, LangIndex). _
Value Then
ZACount1 = 1
End If
Next i
'Änderung bei vorhandener Banküberweisung
For i = 0 To Listbox1.ListCount - 1
If Me.Listbox1.List(i, 1) = Worksheets("Language").Cells(LangKatRow + 6, LangIndex). _
Value Then
ZACount2 = 2
End If
Next i
NoEvent = True
Me.ComboBox1.Clear
NoEvent = False
For i = 5 To 8
If i = 5 And ZACount1 = 1 Then GoTo weiter
If i = 6 And ZACount2 = 2 Then GoTo weiter
Me.ComboBox1.AddItem Worksheets("Language").Cells(LangKatRow + i, LangIndex).Value
weiter:
Next i
End Sub
Private Sub ComboBox1_Change()
If NoEvent Then Exit Sub
MsgBox("?"),vbsystemmodal
LangKat ("ZAHLUNGSART")
'Freischalten Combobox2
If ComboBox1.Value = Worksheets("Language").Cells(LangKatRow + 7, LangIndex).Value Or _
ComboBox1.Value = Worksheets("Language").Cells(LangKatRow + 8, LangIndex).Value Then
ComboBox2.Enabled = True
ComboBox2.BackColor = &H80000005
'Freischalten des Speicherknopfes
If TextBox1.Text "" And ComboBox1.Value "" And ComboBox2.Value "" Then
Button2.Enabled = True
Else
Button2.Enabled = False
End If
Else
ComboBox2.Enabled = False
ComboBox2.Value = ""
ComboBox2.BackColor = &H80000004
'Freischalten des Speicherknopfes
If TextBox1.Text "" And ComboBox1.Value "" Then
Button2.Enabled = True
Else
Button2.Enabled = False
End If
End If
End Sub
Private Sub ComboBox1_DropButtonClick()
Call ComboBox1_Fill
End Sub
Ich will diese MsgBox nicht, weil sie den Ablauf unnötig kompliziert! Habt ihr eine Idee dazu?
Danke und LG
Michael