在特定列中使用范围查找方法
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
我已经对此进行了一段时间的修改,下面的代码可以正常工作,但它搜索的次数超出了我的预期。我希望它只搜索 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