2016-12-28 130 views
0

如何從定義的範圍中查找最後一個單元格的位置?單元格不必包含任何數據,但必須是來自某個範圍的最右邊和最下方的單元格。從範圍VBA中查找最後一個單元格

Set rngOrigin = wksOrigin.Cells(IntFirstRow, IntFirstColumn).CurrentRegion 

我希望收到

Cells(i,j) 
+0

這可能爲一個簡單的情況下工作http://www.cpearson.com/excel/cells.htm與設置myrange =範圍(「A1:A10」),並使用該鏈接重新索引一個範圍的情況下,並使用myrange.Rows.Count – barlop

回答

0

嘗試以下

rngOrigin.End(xlDown).End(xlRight) 

,或者您可以使用CurrentRegion和計數的行和列,並使用Offset

0

你的情況,因爲你想在012中找到最右邊和最下面的單元格(定義爲工作表),您可以使用SpecialCells(xlCellTypeLastCell)來獲取最後一個單元行和列。

i = wksOrigin.Cells.SpecialCells(xlCellTypeLastCell).Row ' <-- get last row number 
j = wksOrigin.Cells.SpecialCells(xlCellTypeLastCell).Column ' <-- get last column number 

如果你要調試的結果,你可以添加:

MsgBox "Last row at " & i & ", last column at " & j 
+1

我想找到當前區域的Range的最後一個單元格,而不是整個Worksheet。如果工作表包含超出當前區域的數據,我不想包含它們。 – Fajka

+0

你定義的範圍是什麼? –

1

也許你是在此之後:

'absolute indexes from cell A1 
With rngOrigin 
    i = .Rows(.Rows.count).row 
    j = .Columns(.Columns.count).Column 
End With 

'relative indexes from rngOrigin upleftmost cell 
With rngOrigin 
    i = .Rows(.Rows.count).row - .Rows(1).row + 1 
    j = .Columns(.Columns.count).Column - .Columns(1).Column + 1 
End With 
0

我處理它在下面的代碼,但你的言論很有幫助。謝謝。

intLastRow = rngOrigin.Cells(1, 1).Row + rngOrigin.Rows.Count - 1 
intLastCol = rngOrigin.Cells(1, 1).Column + rngOrigin.Columns.Count - 1 
+0

那麼你應該採用我的「絕對」代碼,並避免重複'rngOrigin'並使用(對我來說)更適當的範圍規格 – user3598756

-1

如果你想有一個定義範圍的絕對值最後一個單元格,不管它是否有任何內容,這裏有一個簡單的解決方案

Dim InputRng As Range 'define a range for the test' 
Set InputRng = Range("$F$3:$F$15") 
MsgBox InputRng(1).Address & ":" & InputRng(InputRng.Cells.Count).Address 'This would output the absolute address of defined range' 

enter image description here

+0

雖然這個鏈接可能回答這個問題,但最好在這裏包含答案的基本部分,提供鏈接供參考。如果鏈接頁面更改,則僅鏈接答案可能會失效。 - [來自評論](/ review/low-quality-posts/18793890) – Dez

+0

@Dez:謝謝你的提示,我會在有空的時候這樣做。 –

+0

@我已經回覆了德茲,當我有時間時,我會做。我正在使用執行類似功能的Excel中的UDF,並且先檢查了堆棧,但找不到任何有用的答案。最終我從我的答案中鏈接了另一個網站的解決方案。我已經測試過它,它工作得很好。 –

相關問題