在特定列中使用范围查找方法
我一直在修补这一段时间,我有下面的代码工作,但它比我想要的更多的search。 我希望它只是search栏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
内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
参数设置为最后一个单元格?
主要原因是search从第一个单元开始。 HTH
我会尝试这样的
- 确保你从C1开始search,以防万一有多个匹配(假设你正在设置一个滚动窗口)
-
xlFormulas
在隐藏行中find单元格,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