VBA:范围方法不给予所需的输出

我想使用这个代码来select一个特定的列的值

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

但不知何故,这是行不通的,我甚至尝试过使用

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

这也不是。

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

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

 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 

这工作,但我很困惑为什么设置rng =范围(“O2”,范围(“O2”)。结束(xlDown))没有工作

O2以下的单元全部是空白的还是隐藏的行?

使用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