VBA:Range方法没有给予所需的输出
问题描述:
我想使用此代码VBA:Range方法没有给予所需的输出
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
+0
这有效,但我很困惑为什么设置rng = Range(“O2”,Range(“O2”)。End xlDown))没有工作。 –
+0
我想这个列中的数据不一致。或者你不是想要正确的工作表范围。 – newguy
答
这个工作,但我很困惑,为什么设置RNG =范围( “02”,范围( “02”)。完(xlDown))没有工作
低于细胞全部空白,还是有隐藏的行?
使用Find
比xlUp
和xlDown
技术更稳健。它处理我上面提出的问题(隐藏行等)
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
它怎么不适合你?任何错误?它为我工作得很好。使用'Debug.Print Rng.Address'来检查范围地址。什么是期望的输出? – newguy
期望的输出是$ O $ 2:$ O $ 172315但Debug.Print给出$ O $ 2:$ O $ 1048576 –