VBA:Range方法没有给予所需的输出

问题描述:

我想使用此代码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 –

您的代码工作正常,并会给你想要的结果,如果有在列中没有空白单元格,否则它会给你错误的地址

你可以做同样的事情,这样

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

这个工作,但我很困惑,为什么设置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