我正在尝试获取find函数结果的行号,我正在使用以下内容。
Set FindRow = ThisWorkbook.Sheets("Schedule").Range(ActiveCell.Address & ":n" & Sheets("Schedule").Cells(ActiveSheet.Rows.Count, 1).End(XlUP).Row).Find(What:="Assembly", SearchDirection:=xlPrevious, MatchCase:=False)
Msgbox (FindRow.Row)
这样可以正常工作但返回范围内具有值的最后一个单元格。 如果我将搜索方向更改为XlNext,则返回下面的下一个单元格,其中包含值。 我希望它在活动单元格上方搜索下一个值。
答案 0 :(得分:2)
认为你只需要指定After参数。编辑 - 根据活动单元格进行反射,您搜索的范围可以是任意大小,因此您需要解释“活动单元格上方”的含义。
Sub x()
Dim FindRow As Range, r As Range
With ThisWorkbook.Sheets("Schedule")
Set r = .Range(ActiveCell.Address & ":N" & .Cells(.Rows.Count, 1).End(xlUp).Row)
Set FindRow = r.Find(What:="Assembly", after:=r(r.Cells.Count), SearchDirection:=xlNext, MatchCase:=False)
End With
If Not FindRow Is Nothing Then MsgBox (FindRow.Row)
End Sub