在For循环中设置范围

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)

这两个代码不相同吗?我应该对第二个进行哪些更改,它以与第一个相同的方式执行,但不会让我在代码中硬编码范围?

ada*_*ich 5

你得到的第二个只得到范围内的最后一个单元格,我相信从第一个例子中我将是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)