查找范围内所有匹配的单元格值

我创build了一个macros来查找一个单元格在一个范围内的所有匹配的值。 用户在单元格A2input例如numb ,然后每次他点击Findbutton时,它会显示匹配的单元格,例如Order Number然后purchase number然后part number

在这里输入图像说明

这是我的代码

 Sub find_matched_cells() w = ActiveWorkbook.Sheets("Sheet4").Range("A2") ActiveWorkbook.Sheets("Sheet4").Range("A4:A104").Find(What:=(w), After:=ActiveCell, LookIn:=xlFormulas, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False).Activate End Sub 

它工作正常,但当用户例如按不在我的范围内的单元格然后buttonfind将无法正常工作。 问题在于

 After:=ActiveCell 

例如,如果您错误地select了一个不在A4范围内的单元格:A104,则ActiveCell将不在我的范围内,并且会出现错误。

我需要添加条件,例如第一个ActiveCell从A4开始,如果我find第一个匹配的单元格,那么ActiveCell将采取这个值。

还有其他build议吗? 非常感谢你。

一种方法是…

 Sub find_matched_cells() Dim Rng As Range Set Rng = ActiveWorkbook.Sheets("Sheet4").Range("A4:A104") w = ActiveWorkbook.Sheets("Sheet4").Range("A2") If Intersect(ActiveCell, Rng) Is Nothing Then Range("A4").Select Rng.Find(What:=(w), After:=ActiveCell, LookIn:=xlFormulas, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False).Activate End Sub 

你可以检查路口。 我会重新编写代码,这取决于你需要实际做的每一个这些find的单元格 – 它只是select它们? 我修改了下面的代码,以避免错误,如果没有find值。

 Sub x() Dim rFind As Range, sAddr As String, w w = ActiveWorkbook.Sheets("Sheet4").Range("A2") With ActiveWorkbook.Sheets("Sheet4").Range("A4:A104") Set rFind = .Find(What:=w, LookIn:=xlFormulas, LookAt:=xlPart, MatchCase:=False, SearchFormat:=False) If Not rFind Is Nothing Then sAddr = rFind.Address Do rFind.Select MsgBox w & " found at " & rFind.Address Set rFind = .FindNext(rFind) Loop While rFind.Address <> sAddr End If End With End Sub