簡體   English   中英

循環遍歷命名范圍中的單元格

[英]loop through cells in named range

我正在嘗試編寫將循環遍歷范圍內所有單元格的代碼。 最終我想做一些更復雜的事情,但由於我遇到了麻煩,我決定創建一些簡短的測試程序。 第一個示例工作正常但第二個示例(帶有命名范圍)沒有(給出“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 = Range(“A1:A3”)正在創建范圍對象,而不是命名范圍。 這應該工作

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

如果你想創建一個名為Rng的命名范圍

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

將創建它,或者您可以像thsi一樣創建和循環它

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

要調整第二個代碼,您需要認識到您的范圍rng現在是一個表示范圍的變量,並將其視為:

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 

警告:大多數情況下,如果可以避免在整個范圍內循環,則代碼會更快。

試試這個,相反:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM