循环通过指定范围内的单元格

我正在尝试编写将循环遍历范围内的所有单元格的代码。 最后我想做一些更复杂的事情,但由于我遇到了麻烦,我决定创build一些简短的testing程序。 第一个例子工作正常,但第二个(与命名范围)不(给出了“Object_Global失败的方法范围”错误信息)。 任何想法,我做错了什么? 我真的很想用一个命名的范围来做这个…谢谢!

作品:

Sub foreachtest() Dim c As Range For Each c In Range("A1:A3") MsgBox (c.Address) Next End Sub 

不起作用:

 Sub foreachtest2() Dim c As Range Dim Rng As Range Set Rng = Range("A1:A3") For Each c In Range("Rng") MsgBox (c.Address) Next End Sub 

要调整你的第二个代码,你需要认识到你的范围rng现在是一个代表一个范围的variables,并将其视为:

 Sub foreachtest2() Dim c As Range Dim Rng As Range Set Rng = Range("A1:A3") For Each c In rng MsgBox (c.Address) Next End Sub 

警告:大多数情况下,如果您可以避免在范围内循环,代码会更快。

Set Rng = Range(“A1:A3”)正在创build一个范围对象,而不是一个命名的范围。 这应该工作

 Sub foreachtest2() Dim c As Range Dim Rng As Range Set Rng = Range("A1:A3") For Each c In rng MsgBox (c.Address) Next End Sub 

如果你想创build一个名为Rng的命名范围,那么

 Range("A1:A3).Name="Rng" 

将创build它,或者你可以像创build和循环它thsi

 Dim c As Range Range("a1:a3").Name = "rng" For Each c In Names("rng").RefersToRange MsgBox c.Address Next c 

试试这个,而是:

 Sub foreachtest2() Dim c As Range Range("A1:A3").Name = "Rng" For Each c In Range("Rng") MsgBox (c.Address) Next End Sub