2016-06-07 84 views
1

我想使用此代碼VBA:Range方法沒有給予所需的輸出

Set rng = Range("O2", Range("O2").End(xlDown)) 

選擇特定的列值但不知何故,這是行不通的,我甚至用

Set rng = ThisWorkbook.Sheets("Sample").Range("O2", Range("O2").End(xlDown)) 

其沒有按嘗試也不是。

+0

它怎麼不適合你?任何錯誤?它爲我工作得很好。使用'Debug.Print Rng.Address'來檢查範圍地址。什麼是期望的輸出? – newguy

+0

期望的輸出是$ O $ 2:$ O $ 172315但Debug.Print給出$ O $ 2:$ O $ 1048576 –

回答

0

您的代碼工作正常,並會給你想要的結果,如果有在列中沒有空白單元格,否則它會給你錯誤的地址

你可以做同樣的事情,這樣

Dim frow As Long 
frow = Worksheets("Sample").Range("O" & Rows.Count).End(xlUp).Row 
Set rng = Worksheets("Sample").Range("O2:O" & frow) 
Debug.Print rng.Address 
+0

這有效,但我很困惑爲什麼設置rng = Range(「O2」,Range(「O2」)。End xlDown))沒有工作。 –

+0

我想這個列中的數據不一致。或者你不是想要正確的工作表範圍。 – newguy

1

這個工作,但我很困惑,爲什麼設置RNG =範圍( 「02」,範圍( 「02」)。完(xlDown))沒有工作

低於細胞全部空白,還是有隱藏的行?

使用FindxlUpxlDown技術更穩健。它處理我上面提出的問題(隱藏行等)

Sub AnotherWay() 
Dim rng1 As Range 
Set rng1 = Range("O:O").Find("*", [o1], xlFormulas, , , xlPrevious) 
If rng1.Row > 2 Then 
    Set rng2 = Range(rng1, [o2]) 
    Debug.Print rng2.Address 
Else 
    MsgBox "range invalid" 
End If 
End Sub