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

我一直在修补这一段时间,我有下面的代码工作,但它比我想要的更多的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:C10000C1: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