我正在尝试打印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
如何使最后一段代码按我尝试的方式工作?
答案 0 :(得分:1)
您忘记了A
和row
:
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。