我有這樣的代碼: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