[英]Iterate over cells contained in range contained in array
我正在嘗試遍歷范圍內的每個單元格。 過去,我可以使用以下方法做到這一點:
Function iterateOverEverything(someRange) As Integer
Dim cell As range
For Each cell In someRange
doSomething(cell)
Next
iterateOverEverything = 3
End Function
上面的代碼有效 。
問題是我試圖創建一個給定多個范圍的函數,並分別對其進行迭代-我不想合並這些范圍,因此必須能夠比較多個范圍。 我的當前策略是使用范圍的陣列,然后for each
在范圍的每一個細胞。 考慮以下代碼:
Function iterateOverMultipleRanges(rangeZero, rangeOne) As Integer
Dim ranges(1) As range
ranges(0) = rangeZero
ranges(1) = rangeOne
Dim cell As range
For i = 0 To UBound(ranges) - 1
For Each cell In ranges(i)
doSomething(cell)
Next
Next
iterateOverMultipleRanges = 3
End Function
上面的代碼不起作用 。
我相信我已經確定了問題:由於某種原因for each
都無法迭代數組的內容。 要遇到此問題,請嘗試運行以下代碼:
Function iterateOverMultipleRanges(rangeZero, rangeOne) As Integer
Dim ranges(1) As range
ranges(0) = rangeZero
ranges(1) = rangeOne
Dim cell As range
For Each cell In ranges(1)
doSomething(cell)
Next
iterateOverMultipleRanges = 3
End Function
以上將引發錯誤。
我應該如何遍歷多個范圍? 我想念什么?
請注意,我找不到任何相同的問題,但是由於我對這個問題不熟悉,所以完全有可能與另一個問題密切相關。
謝謝!
編輯:有關答案的其他信息,請參閱mwolfe02的答案: https ://stackoverflow.com/a/5042718/8133062
屬性集用於對象(例如,類實例),
屬性Let用於“普通”數據類型(例如,字符串,布爾值,長整數等)
分配對象時需要使用Set
:
Function iterateOverMultipleRanges(rangeZero As Range, _
rangeOne As Range) As Integer
Dim ranges(1) As range
Set ranges(0) = rangeZero
Set ranges(1) = rangeOne
Dim cell As range
For i = 0 To UBound(ranges) - 1
For Each cell In ranges(i)
doSomething(cell)
Next
Next
iterateOverMultipleRanges = 3
End Function
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.