我有一个跨行和列的非连续选择,我想在它上面做一个For Each循环.Excel VBA通过首先循环第1列,然后是2,3等来完成此操作; 但我希望它首先沿着行循环.
(我的工作表看起来如下图所示,我需要依次循环选择(版本)每个列,并检索文档编号和其他信息.工作表中的行数和版本列不固定) .
如果没有编写相当大的Sort函数并创建引用数组,我想知道是否有"内置"方法来执行此操作?
我不需要代码,只需要解释.
这是基于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)
归档时间: |
|
查看次数: |
185 次 |
最近记录: |