Clever-Excel-Forum

Normale Version: VBA - Combobox matchrequired Alternative
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hi Comunity,

ich benötige noch einmal eure Hilfe:

Ich habe eine Combobox die per RowSource mit einer intelligenten Tabelle befüllt wird. Ebenso befindet sich vorausgefüllt ein Hilfstext in der Kombobox, der jedoch nicht in der Liste enthalten ist.
Ich möchte nun, dass er beim Click auf einen Cmd-Button überprüft, ob der Wert, der in der Kombobox steht auch in der Liste enthalten ist.

Über Google bin ich auf die Objekteigenschaft "matchrequired = true" gekommen, allerdings hält diese mich in der Kombobox - sofern ein Mal ausgewählt - gefangen und die Fehlermeldung ist auch nicht gerade "schön".

Ich bin nun auf der Suche nach einer Alternative. Folgende Codes habe ich:


Code:
Private Sub UserForm_Initialize()
With Combo_Zugehoerigkeit
   .RowSource = "Tabelle3"
   .Text = "Bitte Zugehörigkeit auswählen"
'    .MatchRequired = True
End With
End Sub

Code:
Private Sub Cmd_Uebernehmen_Click()
'prüft, ob die Zugehörigkeit aus der Auswahl erfolgt ist oder aber eigene Schreibweisen
If Combo_Zugehoerigkeit.Value <> Combo_Zugehoerigkeit.RowSource.List Then
   MsgBox "Bitte wählen Sie die Zugehörigkeit aus der Liste aus", vbOKOnly & vbExclamation, "Eintragung erforderlich"
   Combo_Zugehoerigkeit.Value = ""
   Combo_Zugehoerigkeit.SetFocus
   Exit Sub
End If

Leider funktioniert das so nicht - auch nicht nur mit .list oder .rowsource


Bin für jede Hilfe dankbar :)

Gruß Tim
Hallo,

hat es einen Grund, dass Du Eingaben zulässt? Wenn nicht, dann ändere bei den Eigenschaften den Style.
Hi Andre,

der Grund ist, dass ich keine Voreinstellung treffen wollte, sondern ein "Hilfstext" zunächst in der Box stehen sollte - sonst gibt es eigentlich keine Gründe dafür

Gruß Tim
Ich habe nun folgende Möglichkeit im Internet gefunden ... ob damit Probleme auftauchen kann ich bislang noch nicht abschätzen, da ich den Code nicht verstehe. Im ersten Test scheint es zu funktionieren.


Code:
Private Sub Cmd_Uebernehmen_Click()
Dim Liste As Long

Liste = Me.Combo_Zugehoerigkeit.ListIndex

If Liste = -1 Then
   MsgBox "Hallo"
   Combo_Zugehoerigkeit.SetFocus
   Exit Sub
End If
Verzichte auf dein Vornehmen.

Verzichte auf rowsource, benütze die Eigenschaft .List
Wenn etwas mitgeteilt werden muss: benutze ein Label oder die Eigenschaft .Controltiptext.