我试图将数组中的值与文本字符串进行比较。 通过拆分包含字符串的记录生成数组。 请参阅下面的伪代码。
Dim fish As Variant
fish = Split(myRS![Field2], " ")
If fish(Array reference hear?) = "whatever string" Then
'whatever else in hear
End If
我认为我遇到以下问题 - 引用数组的正确部分,然后将值转换为字符串
答案 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循环来循环数组中的字符串。获取数组的范围需要LBound
和UBound
。如果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