在特定列中使用范围查找方法

Use Range Find Method in a specific column

我已经对此进行了一段时间的修改,下面的代码可以正常工作,但它搜索的次数超出了我的预期。我希望它只搜索 C 列而不是整个 sheet。我试过将 Cells.Find 更改为 Range("C1:C10000").Find 但 returns 没有匹配项。

真的被这个难住了。

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 内,则 return 什么也没有。试试这个:

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 参数设置为最后一个单元格?
主要原因是搜索从第一个单元格开始。 HTH

我会这样尝试

  • 确保从 C1 开始搜索,以防出现多个匹配项(假设您正在设置滚动窗口)
  • xlFormulas 查找隐藏行中的单元格,xlValues 跳过它们
  • 不需要Select

    Dim rng1 As Range
    Set rng1 = Sheets("State Agent List").Range("C1:C10000").Find(CStr(ComboBox22.Value), [c10000], xlFormulas, xlPart, , xlNext)
    
    If Not rng1 Is Nothing Then
        ActiveWindow.ScrollRow = rng1.Row
    Else
        MsgBox "Location not listed."
    End If