簡體   English   中英

遍歷數組中包含的范圍中包含的單元格

[英]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.

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