我已经对此进行了一段时间的修改,下面的代码可以正常工作,但是它的搜索量超出了我的期望。我希望仅搜索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参数设置为最后一个单元格?
主要原因是从第一个单元格开始搜索。高温超导

09-26 23:25