如何检查cmbTypeYacht.text
中是否存在来自cmbTypeYacht.list
的数据?
这就是我所拥有的:
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
抱歉标签我不太确定它是哪个但是我正在使用Microsoft Visual Basic应用程序。
答案 0 :(得分:9)
ComboBox
类有一个FindStringExact()
方法可以帮到你,就像这样:
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
您也可以循环浏览列表,如下所示:
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
答案 1 :(得分:2)
我在Excel 2013中工作,没有FindStringExact或.Items.Contains所以这些都不是有效的。也没有必要迭代列表。实际上非常简单。给定用户形式“MyUserForm”和组合框“MyComboBox”,
If MyUserForm.MyComboBox.ListIndex >= 0 Then
MsgBox "Item is in the list"
Else
MsgBox "Item is NOT in the list"
End If
说明:如果所选项目不在列表中,则.ListIndex返回-1。
答案 2 :(得分:0)
您无需遍历combobox.items。 Items.Contains将为您迭代列表。
只需使用:
If cmbTypeYacht.Items.Contains(cmbTypeYacht.Text) Then
MessageBox.Show("Found It")
Exit For
End If
答案 3 :(得分:0)
搜索:VBA检查组合框列表中是否已存在数据? 但是vba不具备上述属性。
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
这是在http://www.ozgrid.com/forum/showthread.php?t=187763进行大量搜索后找到的 实际上是有效的
答案 4 :(得分:0)
vba中的组合框有一个名为MatchFound的属性。如果您在组合框(ComboBox.Value
)中输入的值之前存在,它将返回true。
将以下代码放在组合框的更新事件中进行试用
Private Sub ComboBox_AfterUpdate()
If ComboBox.MatchFound = True then
Msgbox "Value exist"
End If
End Sub