Ali*_*Ali 2 excel vba excel-2003 excel-vba
我想在For循环中设置范围.我执行此操作时,我的代码工作正常:
For Each i in Range("A1":"A5")
'Some process code
Next i
Run Code Online (Sandbox Code Playgroud)
但是当我这样做时,我得不到相同的结果:
For Each i in Range("A1").End(xlDown)
'Some Process
Next i
Run Code Online (Sandbox Code Playgroud)
这两个代码不相同吗?我应该对第二个进行哪些更改,它以与第一个相同的方式执行,但不会让我在代码中硬编码范围?
你得到的第二个只得到范围内的最后一个单元格,我相信从第一个例子中我将是A5.相反,你需要做这样的事情.
我将其构建为一个小测试,因此您可以看到第一个选项,第二个更正,以及我希望如何执行此操作的示例.
Option Explicit
Sub test()
Dim r As Range
Dim x As Range
' Make sure there is stuff in Range("A1:A5")
Range("A1") = 1
Range("A2") = 2
Range("A3") = 3
Range("A4") = 4
Range("A5") = 5
' Your first option
For Each x In Range("A1:A5")
Debug.Print x.Address & ", " & x
Next
' What you need to do to get the full range
For Each x In Range("A1", Range("A1").End(xlDown))
Debug.Print x.Address & ", " & x
Next
' My preferred method
Set r = Range("A1").End(xlDown)
For Each x In Range("A1", r)
Debug.Print x.Address & ", " & x
Next
End Sub
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13803 次 |
最近记录: |