2013-10-11 6 views
5

Wie kann ich überprüfen, ob die Daten von cmbTypeYacht.text bereits in cmbTypeYacht.list existieren?Wie kann ich prüfen, ob die Daten in der Combobox-Liste bereits existieren?

Hier ist, was ich habe:

Dim TypeYacht As String 'Type of yacht input 

TypeYacht = cmbTypeYacht.Text 

If TypeYacht = ("cmbTypeYacht list") Then 
    MsgBox "Type of Yacht is already on the list", vbExclamation, "Yacht Chantering" 
Else 
    cmbTypeYacht.AddItem cmbTypeYacht.Text 

    With cmbTypeYacht 
     .Text = "" 
     .SetFocus 
    End With 
End If 

traurig über den Tag im nicht ganz sicher, was es aber im mit Microsoft Visual Basic App ist.

+0

Nun, die es, VB.NET oder VBScript ist:

Code unten in dem Update-Ereignisse des combobox für Probe

Private Sub combobox_AfterUpdate() if combobox.MatchFound = True then Msgbox "Value exist" end if End Sub

Check it out setzen? Oder VBA? Ich werde VB.NET übernehmen, aber Sie haben keine Klammern ... – Ryan

Antwort

9

Die ComboBox Klasse hat eine FindStringExact() Methode, die den Trick für Sie tun, wie folgt aus:

Dim resultIndex As Integer = -1 

resultIndex = cmbTypeYacht.FindStringExact(cmbTypeYacht.Text) 

If resultIndex > -1 Then 
    ' Found text, do something here 
    MessageBox.Show("Found It") 
Else 
    ' Did not find text, do something here 
    MessageBox.Show("Did Not Find It") 
End If 

UPDATE:

Sie können auch nur Schleife durch die Liste als auch, wie folgt aus:

Dim i As Integer = 0 
For i = 0 To cmbTypeYacht.Items.Count - 1 
    If cmbTypeYacht.Items.Contains(cmbTypeYacht.Text) Then 
     MessageBox.Show("Found It") 
     Exit For 
    End If 
Next 
+0

Danke karl, ich bin nur neugierig, wenn es andere Möglichkeiten neben der Verwendung der Klasse FindStringExact() gibt? – blackmaler

+0

Schleife durch die Liste? – sam092

+0

@ user2869223 - siehe 'UPDATE:' in meiner Antwort. –

0

Sie müssen nicht durch combobox.items iterieren. Items.Contains durchläuft die Liste bereits für Sie.

einfach verwenden:

If cmbTypeYacht.Items.Contains(cmbTypeYacht.Text) Then 
    MessageBox.Show("Found It") 
    Exit For 
End If 
0

Searching: VBA prüfen, ob die Daten bereits vorhanden in Combobox Liste?
aber VBA hat nicht die oben genannten Eigenschaften. keiner von denen

Sub TestString() 
    Dim myString As String 
    Dim i As Long 
    Dim strFound As Boolean 


    'Just for test purposes 
    myString = "Apple" 


    strFound = False 
    With Me.ComboBox1 
     'Loop through combobox 
     For i = 0 To .ListCount - 1 
      If .List(i) = myString Then 
       strFound = True 
       Exit For 
      End If 
     Next i 
     'Check if we should add item 
     If Not strFound Then .AddItem (myString) 
    End With 
End Sub 

Dies wurde nach einer viel Sucherei auf http://www.ozgrid.com/forum/showthread.php?t=187763 und tatsächlich funktioniert arbeite ich in Excel 2013 und es

0

ist gefunden, so dass keine Findstringexact oder .Items.Contains, sind gültig. Es ist auch nicht notwendig, die Liste zu iterieren. Es ist eigentlich sehr einfach. Bei einer Userform "MyUserForm" und eine Combobox "MeineComboBox",

Dim my_index As Integer 
my_index = -1 
my_index = MyUserForm.MyComboBox.ListIndex 
If my_index >= 0 Then 
    MsgBox "Item is in the list" 
Else 
    MsgBox "Item is NOT in the list" 
End If 

Erläuterung: Set Index auf einen Wert, die List nicht zurückkehren würde (wie -1). Versuchen Sie dann, den ListIndex abzurufen. Wenn der aktuelle .Value nicht in der Liste ist, wird my_index kein neuer Wert zugewiesen und bleibt -1.

Verwandte Themen