非连续For For循环每行而不是列

Ala*_*ers 5 excel vba

我有一个跨行和列的非连续选择,我想在它上面做一个For Each循环.Excel VBA通​​过首先循环第1列,然后是2,3等来完成此操作; 但我希望它首先沿着行循环.

(我的工作表看起来如下图所示,我需要依次循环选择(版本)每个列,并检索文档编号和其他信息.工作表中的行数和版本列不固定) .

如果没有编写相当大的Sort函数并创建引用数组,我想知道是否有"内置"方法来执行此操作?

我不需要代码,只需要解释.

非连续选择

Gar*_*ent 0

这是基于urdearboy的建议:

1.循环列
2.在列内,循环单元格

Sub disjoint()
    Dim r As Range, rInt As Range
    Dim nLastColumn As Long
    Dim nFirstColumn As Long, msg As String
    Dim N As Long

    Set r = Range("C3,C9,E6,E13,E15,G1,G2,G3,G4")

    nFirstColumn = Columns.Count
    nLastColumn = 0
    msg = ""

    For Each rr In r
        N = rr.Column
        If N < nFirstColumn Then nFirstColumn = N
        If N > nLastColumn Then nLastColumn = N
    Next rr

    For N = nFirstColumn To nLastColumn
        Set rInt = Intersect(Columns(N), r)
        If rInt Is Nothing Then
        Else
            For Each rr In rInt
                msg = msg & vbCrLf & rr.Address(0, 0)
            Next rr
        End If
    Next N
    MsgBox msg
End Sub
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述