我有一个项目,需要通过各种工作表进行大量搜索,为此,我在Find
中将VBA的FindNext
函数与Do While...Loop
一起使用。引起我注意的是,FindNext函数不会继承先前搜索提供的参数。
因此,如果我要声明MatchCase:=True
,则FindNext函数可能会找到与搜索字符串不匹配的值。
例如,这就是我要做的(包括FindNext的替代方法)
Set FindComp = wbc.Range("B2:B" & LRow).Find(splititm(0), MatchCase:=True)
If Not FindComp Is Nothing Then FRow = FindComp.Row
Do While Not FindComp Is Nothing
If wbc.Cells(FindComp.Row, "J").Value = wbc.Cells(cell.Row, "J").Value And wbc.Cells(FindComp.Row, cell.Column).Value <> "" Then
wbc.Cells(FindComp.Row, cell.Column).Value = ""
End If
'Does not inherit arguments
Set FindComp = wbc.Range("B2:B" & LRow).FindNext(FindComp)
'Working alternative
Set FindComp = wbc.Range("B2:B" & LRow).Find(splititm(0), after:=FindComp, MatchCase:=True)
If FindComp.Row = FRow Then Exit Do
Loop
为什么FindNext不继承这些参数?我的代码/思路错误吗?