The*_*uch 4 excel vba excel-vba
我有2个数组:一个具有搜索文档的值为(arr),另一个将使用找到的值(arr2)放入相关的单元格地址.我没有问题arr,并在我的代码中成功使用它.
有了arr2,我想找到包含值的任何单元格,arr并将单元格地址lRow的行数向下添加到arr2,但仅限于该地址尚未包含在内arr2.
为了解决我的问题,我找到了2个我想要结合的答案,但到目前为止还没有运气.
我的代码如下:
Sub Initiate()
Dim arr(3) As Variant
arr(0) = "Value1"
arr(1) = "Value2"
arr(2) = "Value3"
arr(3) = "Value4"
Dim arr2() As Variant
Dim Alc as String
Dim lRow as Long
Dim fVal as String
lRow = Activesheet.Cells(Activesheet.Rows.Count, 1).End(xlUp).Row
For Each element In arr
fVal = element
Set fRange = WA.Cells.Find(What:=fVal, LookIn:=xlFormulas _
, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
While Not fRange Is Nothing
While Not IsInArray(fRange.Offset(lRow - 6, 0).Address(False, False), arr2)
ReDim Preserve arr2(0 To UBound(arr2) + 1) As Variant
arr2(UBound(arr2)) = fRange.Offset(lRow - 6, 0).Address(False, False)
Set fRange = WA.Cells.Find(What:=fVal, LookIn:=xlFormulas _
, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
Wend
Wend
Next element
Alc = "="
For Each element In arr2
Alc = Alc & element & "+"
Next element
Alc = Left(Alc, Len(Alc) - 1)
MsgBox Alc
End Sub
Function IsInArray(stringToBeFound As String, arr2 As Variant) As Boolean
IsInArray = (UBound(Filter(arr2, stringToBeFound)) > -1)
End Function
Run Code Online (Sandbox Code Playgroud)
运行时,我收到以下错误:
在这行代码上(在IsInArray函数内):
IsInArray = (UBound(Filter(arr2, stringToBeFound)) > -1)
任何帮助是极大的赞赏!
我不喜欢使用Filter,因为它也匹配子字符串,而且通常不是你想要的
Function IsInArray(stringToBeFound As String, arr2 As Variant) As Boolean
IsInArray = Not IsError(Application.Match(stringToBeFound, arr2, 0))
End Function
Run Code Online (Sandbox Code Playgroud)
也:
ReDim Preserve arr2(0 To UBound(arr2) + 1) As Variant
Run Code Online (Sandbox Code Playgroud)
应该是:
ReDim Preserve arr2(0 To UBound(arr2) + 1)
Run Code Online (Sandbox Code Playgroud)