无法将单元格的值打印到最后一行

时间:2019-12-30 07:24:57

标签: excel vba

我正在尝试打印A列的内容。那里有10行,因此当我尝试如下操作时,我会相应地得到结果:

Sub PrintUptoLastRow()
    Dim oCel As Range

    For Each oCel In Range("A1", "A10")
        Debug.Print oCel
    Next oCel
End Sub

我无需硬编码最后一行就可以得到相同的结果

Sub PrintUptoLastRow()
    Dim oCel As Range

    For Each oCel In Range("A1", Range("A" & Rows.Count).End(xlUp))
        Debug.Print oCel
    Next oCel
End Sub

以上两种方法相同,只要最后一行是A10

但是,我也可以使用以下方法获得结果:

Sub PrintUptoLastRow()
    Dim oCel As Range

    For Each oCel In Range("A1:A5")
        Debug.Print oCel
    Next oCel
End Sub

但是当我尝试使用最后一行模仿上面的内容时,事情出了错:

Sub PrintUptoLastRow()
    Dim oCel As Range

    For Each oCel In Range("A1" & ":" & Range("A" & Rows.Count).End(xlUp))
       Debug.Print oCel
    Next oCel
End Sub

它引发以下错误:

Run-time error `1004`
Method `Range` of object`_Global` failed

如何使最后一段代码按我尝试的方式工作?

1 个答案:

答案 0 :(得分:1)

您忘记了Arow

For Each oCel In Range("A1" & ":A" & Range("A" & Rows.Count).End(xlUp).Row)

或者您使用address属性

For Each oCel In Range("A1" & ":" & Range("A" & Rows.Count).End(xlUp).Address)

但是请注意,您总是参考ActiveSheet。