vba循环遍及非连续范围

Jef*_*rey 10 excel vba

我在行上有一个非连续的范围(myRange的示例地址:$ 2:$ 2,$ 4:$ 205,$ 214:$ 214),我想访问该范围内的特定行和列.我尝试过以下方法:

'获取范围内第2行,第1列的值

myRange.rows(2).Cells(, 1).Value
Run Code Online (Sandbox Code Playgroud)

但是,这给了我工作表中第二行的值,而不是在范围内 - 这意味着它给了我$ 3 $ 1的地址 - 而不是$ 4 $ 1

有人可以解释我如何访问我的范围内的值?(可能与不同的领域有关)

谢谢

Irw*_*her 2

我认为您希望 VBA 做的是将非连续范围视为连续范围。我认为您所采取的方法不会起作用。您必须将其视为多个连续范围。以下代码应该可以帮助您入门。其中 rowSelection 是范围中您感兴趣的行。如果您输入 2,它将选择工作簿中的第 4 行,因为它是范围中的第二行。

Sub Macro1()

    Dim rowCounter As Long
    Dim rowSelection As Long

    rowSelection = 2
    For Each Rng In Range("A2:A2,A4:A205,A214:A214").Areas
         If Rng.Rows.Count >= rowSelection Then
            Rng.Rows(rowSelection - rowCounter).Cells(1, 1).Select
            End
         Else
            rowCounter = rowCounter + Rng.Rows.Count
         End If
    Next Rng

End Sub
Run Code Online (Sandbox Code Playgroud)