VBA确定地址之前的单元格?

我有这个代码:

localise = Cells.Find("Hello" , lookIn:=xlValues).Address MsgBox localise 

msgbox给我$ 10,但是我想在这之前的单元格,我怎么能编程这个VBA?

Offset的使用会得到你想要的。 在这种情况下:

 MsgBox localise.Offset(-1, 0).Address 

这会给你find相同的列,但find的项目之前一行。

您还需要使用Set Set localise = ...来获取必要的对象引用,而不会生成Object Required错误。 也build议不要以为你会find你正在寻找的物品,并处理这种情况。 简而言之:

 Set localise = Cells.Find("Hello", LookIn:=xlValues) If Not localise Is Nothing Then MsgBox localise.Offset(-1, 0).Address Else MsgBox "Didn't find it" End If 

在最后一行开始search,并使用xlnext作为search方向(开始查看第1行)

误读你的问题,find第一次发生。 仍然会推荐从第1行开始search,而不是假设范围存在 – 你当前的代码是做什么的

 Sub FindFirst() Dim Localise As Range Set Localise = Cells.Find("Hello", Cells(Rows.Count, "A"), xlValues, , , xlNext) If Not Localise Is Nothing Then MsgBox Localise.Offset(-1, 0).Address End Sub 

使用胶印是一种select:

localise = Cells.Find("Hello", LookIn:=xlValues).Offset(-1, 0).Address

或者如果你刚刚在$ A $ 9之后,并且想要一个较less涉及的方法,那么只需findstring中的第二个$,并将其作为一个值减1。