我已经对此进行了一段时间的修改,下面的代码可以正常工作,但是它的搜索量超出了我的期望。我希望仅搜索C列而不是整个工作表。我尝试将Cells.Find
更改为Range("C1:C10000").Find
,但是没有返回任何匹配。
真的很困扰这一点。
Dim r As Range
Set r = Sheets("State Agent List").Range("C1:C10000").Find(What:=ComboBox22.Value, _
After:=ActiveCell, LookAt:=xlPart, SearchOrder:=xlByRows)
If Not r Is Nothing Then
r.Select
ActiveWindow.ScrollRow = ActiveCell.Row
Else
MsgBox "Location not listed."
End If
最佳答案
您的问题是ActiveCell
的使用,如果碰巧不在C1:C10000
范围内,则不会返回任何内容。试试这个:
Dim searchRng As Range: Set searchRng = Sheets("State Agent List").Range("C1:C10000")
Dim r As Range
Set r = searchRng.Find(What:=ComboBox22.Value, After:=searchRng(searchRng.Count))
参数
searchRng(searchRng.Count)
与您正在处理的范围的最后一个单元格有关。它可以工作,但是可以通过以下方式显式编写:searchRng.Cells(searchRng.Cells.Count)
为什么我们需要将
After
参数设置为最后一个单元格?主要原因是从第一个单元格开始搜索。高温超导