我正在尝试查找某个值在一定范围内的行。这个范围是变化的,所以用变量来设置。在下面的示例中,范围设置为从第 1 行到第 441 行,它找到第 442 行中的值。它如何在设置范围之外找到该值?
Set myDataFile = Workbooks.Open(Filename:=myDataFolder & myFileName)
If counter + n = 1 Then
With myDataFile.Sheets(1).Range(Cells(nrlist(n), 1), Cells(nrlist(n + 1) - 1, 1))
Set loc = Cells.Find(what:=list(j))
If Not loc Is Nothing Then
Debug.Print (loc.Row)
i = loc.Row
Else
i = ""
end if
在 VBA 中,如果您发现值超出指定范围,可能是因为
Cells.Find
方法不限于您定义的 With
块范围。为了确保它仅在指定范围内搜索,请在 .Find
块内使用 Cells.Find
而不是 With
。这是一个紧凑的更正:
Set myDataFile = Workbooks.Open(Filename:=myDataFolder & myFileName)
If counter + n = 1 Then
With myDataFile.Sheets(1).Range(myDataFile.Sheets(1).Cells(nrlist(n), 1), myDataFile.Sheets(1).Cells(nrlist(n + 1) - 1, 1))
Set loc = .Find(what:=list(j))
If Not loc Is Nothing Then
Debug.Print loc.Row
i = loc.Row
Else
i = ""
End If
End With
End If
确保
.Find
以点为前缀,以将搜索限制在指定范围内。另外,请在 Cells
块内指定 With
的完整路径,以避免引用错误的工作表。