jum*_*and 2 excel union vba range
我正在尝试组合一系列单元格中的值。我创建了一个范围如下:
Dim rng As Range
Set rng = Application.Union(Range("A1:A3"), Range("C1:E2"))
For Each Address In rng
Debug.Print Address.Address
Next
Run Code Online (Sandbox Code Playgroud)
我想按水平顺序读取单元格:A1、C1、D1、E1、A2、C2...等。但它们被读取 A1、A2、A3、C1、C2...等
我怎样才能水平阅读它们?谢谢
小智 5
您必须处理使用Union 方法创建的Range 对象中的Range.Areas。
Sub laterally()
Dim r As Long, c As Long, a As Long
Dim mnRW As Long, mxRW As Long, mnCL As Long, mxCL As Long
Dim rng As Range
With Worksheets("Sheet1") '<~~ ALWAYS set the worksheet!
Set rng = Union(.Range("A1:A3"), .Range("C1:E2"))
Debug.Print rng.Address(0, 0)
mnRW = Rows.Count: mxRW = 0
mnCL = Columns.Count: mxCL = 0
With rng
For a = 1 To .Areas.Count
With .Areas(a)
mnRW = Application.Min(mnRW, .Rows(1).Row)
mxRW = Application.Max(mxRW, .Rows(.Rows.Count).Row)
mnCL = Application.Min(mnCL, .Columns(1).Column)
mxCL = Application.Max(mxCL, .Columns(.Columns.Count).Column)
End With
Next a
For r = mnRW To mxRW
For c = mnCL To mxCL
If Not Intersect(.Cells, .Parent.Cells(r, c)) Is Nothing Then _
Debug.Print .Parent.Cells(r, c).Address(0, 0)
Next c
Next r
End With
End With
End Sub
Run Code Online (Sandbox Code Playgroud)
收集并集范围的范围后,循环遍历每个可能的单元格,并使用Intersect 方法确定它是否属于并集。
归档时间: |
|
查看次数: |
614 次 |
最近记录: |