我有这样的代码:VBA确定地址之前的单元格?
localise = Cells.Find("Hello" , lookIn:=xlValues).Address
MsgBox localise
的MSGBOX给我$ A $ 10,但我想这一个前细胞,我怎么能在VBA程序呢?
我有这样的代码:VBA确定地址之前的单元格?
localise = Cells.Find("Hello" , lookIn:=xlValues).Address
MsgBox localise
的MSGBOX给我$ A $ 10,但我想这一个前细胞,我怎么能在VBA程序呢?
采用Offset
会得到你想要的东西。在这种情况下:
MsgBox localise.Offset(-1, 0).Address
这会为您提供相同的列,但找到的项目之前有一行。
您还需要在行Set localise = ...
中使用Set
以便获得必要的对象引用并且不会生成Object Required
错误。还建议不要假设您会找到您正在搜索的项目并处理这种情况。简而言之:
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
使用胶印是一种选择:
localise = Cells.Find("Hello", LookIn:=xlValues).Offset(-1, 0).Address
或者,如果你刚过$ A $ 9是并希望较少参与的方式则只要找到字符串中的第二个$,使这一权利入一个值并从它减去1。
i循环throught片材,所以我不能使用$ A $ 9作为恒定,我试图:本地化= Cells.Find( “你好”,找钱:= xlValues)。地址(FALSE,FALSE) -1但没有工作 – JeanLo
Dim localise_rng as range |设置localise_rng = cells.Find(“Hello”,lookIn:= xlValues)|设置localise_rng = localise_rng.offset(0,-1)| localize = localise_rng.adress – user3819867
我认为他想要之前没有列的行。 –
开始你的最后一排的搜索和使用xlnext
搜索方向(开始寻找行1)
误解你的问题是找到第一次出现。仍然建议从第1行搜索,虽然,而不是假定该范围存在 - 当前您的代码做
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
除了本地化是一个'文本'。 – user3819867
如果你能保证你会找到任何东西,这是很好的,否则你可能会得到一个错误。最好将'.Find'的响应设置为一个范围对象并对其进行处理 – Dave
我从来没有成功执行过第一个答案的“rng.Address.Offset”。你的编辑几乎弥补了它。 – user3819867