6

如何检查来自的数据是否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 应用程序。

4

5 回答 5

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
于 2013-10-11T01:08:43.777 回答
5

我在 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。

于 2017-07-17T21:40:55.247 回答
2

vba 中的组合框有一个名为 MatchFound 的属性。如果您在组合框 ( ) 中输入的值之前存在,它将返回 true ComboBox.Value

将以下代码放在组合框的更新事件中进行试用

Private Sub ComboBox_AfterUpdate()
If ComboBox.MatchFound = True then
    Msgbox "Value exist"
End If
End Sub

看看: https ://msdn.microsoft.com/en-us/vba/outlook-vba/articles/combobox-matchfound-property-outlook-forms-script

于 2017-12-19T13:26:48.873 回答
-1

您不需要遍历 combobox.items。Items.Contains 已经为您遍历列表。

只需使用:

If cmbTypeYacht.Items.Contains(cmbTypeYacht.Text) Then
    MessageBox.Show("Found It")
    Exit For
End If
于 2016-11-21T01:51:35.237 回答
-1

搜索: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进行大量搜索后发现的, 并且确实有效

于 2017-05-09T16:25:23.897 回答