Hallo,
ich bin VBA Neuling und arbeite grad an meinem ersten kleinen Projekt. Dabei habe ich eine Genreliste als Tabelle festgelegt und diese in die Combobox (cboGenre1) als RowSource eingegeben. Die Liste wird mir auch völlig korrekt angezeigt und die Werte können gewählt werden.
Ich möchte nun wenn ein Wert aus dieser Liste ausgewählt wird, dass sich die Hintergrundfarbe der ComboBox auf LawnGreen und die Schrift in der LabelBox auf Grün ändert. Falls manuell ein Wert eingegeben wird der keinem Wert aus der Liste entspricht sollen beide Boxen in Rot erscheinen.
Hier der Code den ich benutze:
Private Sub cboGenre1_AfterUpdate()
If cboGenre1.Value <> cboGenre1.RowSource Then
cboGenre1.BackColor = rgbRed
lblGenre1.ForeColor = rgbRed
Else
cboGenre1.BackColor = rgbLawnGreen
lblGenre1.ForeColor = rgbGreen
End If
End Sub
Der Code läuft so ohne Probleme, jedoch wird mir bei einer Auswahl aus der Liste alles in rot angezeigt, obwohl es grün werden sollte. Wenn ich anstatt <> ein = mache wirds grün, obwohl es dann eigentlich rot werden sollte.
Außerdem scheint die Unterscheidung eines Wertes aus der Liste und einem sich nicht in der Liste befindenden nicht zu funktionieren. Daher ist wohl mein Code nicht zu gebrauchen.
Da ich ohnehin "MatchRequired" aktivieren werde in der ComboBox kann ich einfach sagen: ' if ComboBox.value <> "" then green '. Mich würd trotzdem interessieren wie der Code richtig lauten würde, damit bei richtiger Eingabe der Hintergrund grün wird und bei falscher rot.
|