访问:将数组变量与字符串进行比较

时间:2014-12-23 17:02:30

标签: ms-access access-vba

我试图将数组中的值与文本字符串进行比较。 通过拆分包含字符串的记录生成数组。 请参阅下面的伪代码。

Dim fish As Variant
fish = Split(myRS![Field2], " ")
    If fish(Array reference hear?) = "whatever string" Then
            'whatever else in hear  
    End If

我认为我遇到以下问题 - 引用数组的正确部分,然后将值转换为字符串

2 个答案:

答案 0 :(得分:1)

如果您只需确定一个或多个数组元素是否与搜索文本匹配,请考虑Filter函数。

在此示例中,Filter FishMatched 作为一维数组返回,该数组包含来自第一个数组( AllFish )的匹配成员:

Dim AllFish As Variant
Dim FishMatched As Variant
AllFish = Split(myRS![Field2], " ")
FishMatched = Filter(AllFish, "whatever string")
If UBound(FishMatched) >= 0 Then
    Debug.Print UBound(FishMatched) + 1; " match(es) found."
Else
    Debug.Print "No match found."
End If

如果您只需要知道 AllFish 的成员中是否存在您的搜索文本,这种方法可能是合适的。但是,由于它创建了一个包含匹配项的新数组,因此无法告诉您匹配的 AllFish 成员的索引。

答案 1 :(得分:0)

你需要一个for循环来循环数组中的字符串。获取数组的范围需要LBoundUBound。如果theStringYouAreLookingFor等于当前数组位置的值i

,您可以在循环内部进行检查
Dim fish As Variant
Dim theStringYouAreLookingFor as String
theStringYouAreLookingFor = "here is what I'm looking for"
fish = Split(myRS![Field2], " ")

For i = LBound(fish) To UBound(fish)
    If theStringYouAreLookingFor = fish(i) then
        Debug.Print "Found it at " & cstr(i + 1) & " position in array"
        Exit for
    End If
Next i