Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA:范围方法未提供所需输出_Excel_Vba - Fatal编程技术网

Excel VBA:范围方法未提供所需输出

Excel VBA:范围方法未提供所需输出,excel,vba,Excel,Vba,我试图使用此代码选择特定列的值 Set rng = Range("O2", Range("O2").End(xlDown)) 但不知怎的,这不起作用,我甚至尝试使用 Set rng = ThisWorkbook.Sheets("Sample").Range("O2", Range("O2").End(xlDown)) 这两者都不行。如果列中没有空白单元格,您的代码工作正常,将提供所需的结果,否则它将提供错误的地址 你也可以这样做 Dim frow As Long frow = Workshe

我试图使用此代码选择特定列的值

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=Range(“O2”,Range(“O2”).End(xlDown))不起作用

下面的单元格
O2
都是空白的,还是有隐藏的行

使用
Find
xlUp
xlDown
技术更可靠。它确实处理我上面提出的问题(隐藏行等)


这对你怎么不起作用?有错误吗?这对我很管用。使用
Debug.Print Rng.Address
检查范围地址。期望的输出是什么?期望的输出是$O$2:$O$172315,但调试。打印给出$O$2:$O$1048576这是有效的,但我不明白为什么设置rng=Range(“O2”,Range(“O2”)。End(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