VBA:范围方法不提供所需的输出

时间:2016-06-07 04:30:06

标签: excel vba

我正在尝试使用此代码选择特定列的值

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

但不知怎的,这不起作用,我甚至尝试使用

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

也没有。

2 个答案:

答案 0 :(得分:1)

  

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

答案 1 :(得分: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