5

好的,所以我对 VB6 不是很熟悉,但我想看看一个数组是否包含一个值。这就是我所拥有的,但它向我抛出了一个错误。可能是“passedValue”类型错误的问题,但我不这么认为。

    Dim transCodes As Variant
    transCodes = Array(40, 41, 42, 43)
    If (transCodes.Contains("passedValue")) Then
    *Do Stuff*
    End If

任何帮助将非常感激!

更新

未能更正我的语法,你能给我一个我可能用来确保“passedValue”是正确类型的转换/转换的例子吗?

更新我的更新

那么VB6中没有“包含”方法吗?还有其他方法可以完成这个简单的任务吗?

4

4 回答 4

11

ContainsVB6在数组上没有本地方法。

您最好的选择是遍历数组依次检查每个项目:

Found = False
For Index = LBound(transCodes) To UBound(transCodes )
  If transCodes(Index) = PassedValue Then
    Found = True
    Exit For
  End If
Next

If Found Then
  'Do stuff
  'Index will contain the location it was found
End If

替代方法包括使用集合并尝试根据它们的值检索项目,但对于这个简单的案例来说,这是更多的工作。

于 2012-05-23T13:53:10.713 回答
4

如果您只想在一行中使用它,您可以使用以下代码检查字符串数组是否包含一个项目(没有循环):

' ARR is an array of string, SEARCH is the value to be searched
Found = InStr(1, vbNullChar & Join(arr, vbNullChar) & vbNullChar, _
vbNullChar & search & vbNullChar) > 0

这取自Devx 提示

于 2015-10-25T11:51:31.613 回答
1

最后基于@Mostafa Anssary

我使用了这个功能

    Function instrSplit(ByVal searchEstado As String, ByVal arrayEstados As String)

       instrSplit = 0

       instrSplit = InStr(1, " " & Join(Split(arrayEstados, ","), " ") & " ", _
                " " & searchEstado & " ")

    End Function

我打电话来

found = instrSplit(mySearchValue, arrayValues)

例如

arrayValues = "8, 64, 72, 1520"
mySearchValue  = "8"


found = instrSplit(mySearchValue, arrayValues)
于 2016-01-23T15:29:47.633 回答
1

我将 Deanna 的答案包装为 VB6 函数:

Public Function StringArrayContains(ByRef arrString() As Boolean, PassedValue) As String
   Dim Found As Boolean
   Found = False
   Dim index  As Integer
    For Index = LBound(arrString) To UBound(arrString)
      If arrString(Index) = PassedValue Then
        Found = True
        Exit For
      End If
    Next
    StringArrayContains = Found
End Function
于 2016-09-02T15:45:08.267 回答