VBA – StrComptypes不匹配或下标超出范围

我正在运行一个For循环来查找variables数组中的string。 我正在使用StrComp比较string。 我正在使用以下格式的数组。 在这里输入图像说明

我已经尝试了两种方法,我将在下面描述。

第一种方法返回,当我使用col = 0时,下标超出范围

Function IsInArray(stringToBeFound As String, arr As Variant, col As Integer) As Long Dim i As Long ' default return value if value not found in array IsInArray = -1 For i = LBound(arr) To UBound(arr) If StrComp(stringToBeFound, arr(i, col), vbTextCompare) = 0 Then IsInArray = i Exit For End If Next i End Function 

第二种方法告诉我StrComp的types不匹配

 Function IsIn1DArray(stringToBeFound As String, arr As Variant) As Long Dim i As Long ' default return value if value not found in array IsIn1DArray = -1 For i = LBound(arr) To UBound(arr) If StrComp(stringToBeFound, arr(i)) = 0 Then IsIn1DArray = i Exit For End If Next i End Function 

过去我一直在使用IsInArray和IsIn1DArray,但是并不适用于这种情况。 想象一下,我想searchstring“[TestHeader]”并返回其索引。 你会怎么做?

arr是一个数组的数组,所以你需要:

 If StrComp(stringToBeFound, arr(i)(col), vbTextCompare) = 0 Then 

注意这可能会失败,因为你的子数组的大小不一样,所以你应该首先testing子数组的Ubound

 Function IsIn1dArray(stringToBeFound As String, arr As Variant) As Long IsIn1dArray = Application.WorksheetFunction.Match(stringToBeFound, arr, 0) End Function