我正在尝试创建一个数组来存储“工作簿 B”中的 A 列中的所有值,这样我就可以引用并查看单元格的值是否在“工作簿 A”的 A 列中的该数组中。
到目前为止,这就是我对该数组的了解:
Dim StrArray() As String
Dim TotalRows As Long
Dim X As Long
Workbooks.Open Filename:="filepath", ReadOnly:=True
With Workbooks("file").Worksheets("sheet")
TotalRows = Rows(Rows.Count).End(xlUp).Row
ReDim StrArray(1 To TotalRows)
For X = 2 To TotalRows
StrArray(X) = Cells(X, 1).Value
Next X
End With
数组的这一部分工作得很好,我通过在 MsgBox 中显示数组中的所有值来确认它工作正常。当我尝试在“工作簿 A”中引用此数组以检查单元格的值是否在该数组中时,问题就出现了。
这就是我对该代码的内容:
For RowCounter = LastRow To 1 Step -1
If IsInArray(Range("B" & RowCounter).Value, StrArray) Then
Range("K" & RowCounter).Value = "MATCH"
End If
Next RowCounter
Workbooks("file").Close SaveChanges:=False
这是我正在使用的功能:
Public Function IsInArray(stringToBeFound As String, arr As Variant) As Boolean
Dim i
For i = LBound(arr) To UBound(arr)
If arr(i) = stringToBeFound Then
IsInArray = True
Exit Function
End If
Next i
IsInArray = False
End Function
它没有将“MATCH”值放在 K 列中。我尝试通过在 If 语句中放置 MsgBox 以查看它是否将值与数组匹配来进行故障排除,它给了我一个永无止境的 MsgBox 循环。如果重要的话,当前 K 列中有此代码正在写入的文本。