使用VBA中的“查找”功能查找活动单元格上方的第一个值?

时间:2018-01-18 11:05:50

标签: vba excel-vba excel

我正在尝试获取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,则返回下面的下一个单元格,其中包含值。 我希望它在活动单元格上方搜索下一个值。

1 个答案:

答案 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