多区域合纵连横身形变幻 单元格定位精准边界分明
主要内容:
一、Range对象的Union属性
Application.Union方法:把多个Range联合在一起,作为一个新的Range对象返回。
举例1:
Sub 合并单元格区域()
Dim r1 As Range, r2 As Range, r3 As Range
Dim ru As Range
Set r1 = Range("B3:E5")
Set r2 = Range("d4:g7")
Set r3 = Range("c9:e9")
Set ru = Union(r1, r2, r3)
ru.Interior.Color = vbYellow
End Sub
提示1:注意Union的表达方法。以及单元格区域的Interior属性
提示2:可省略Union前面的Application
二、Application.Intersect方法:找到同时属于多个Range的单元格(即重叠部分),作为一个新的Range对象返回。
举例2:
Sub 合并单元格区域()
Dim r1 As Range, r2 As Range, r3 As Range
Dim ru As Range
Set r1 = Range("B3:E5")
Set r2 = Range("d4:g7")
Set r3 = Range("c5:e9")
Set ru = Intersect(r1, r2, r3)
ru.Interior.Color = vbYellow
End Sub
三、Range.CurrentRegion属性:返回一个包含了这个Range的最大连续使用区域。该区域与其他任何已使用单元格都不临街。
举例3:
Sub 寻找上海市所在表格()
Dim rCity As Range, rTable As Range
For Each rCity In ActiveSheet.UsedRange
If rCity.Value = "上海市" Then
Set rTable = rCity.CurrentRegion
rTable.Interior.Color = vbBlue
Exit For
End If
Next
End Sub
提示1:
四、Range.Resize属性:以该Range的左上角单元格为原点,生成一个指定大小 的新的Range对象并返回。
举例4:
Sub 寻找上海市所在表格()
Dim rCity As Range, rTable As Range, r1 As Range
For Each rCity In ActiveSheet.UsedRange
If rCity.Value = "上海市" Then
Set rTable = rCity.CurrentRegion
Set r1 = rTable.Resize(2, 3)
r1.Interior.Color = vbBlue
Exit For
End If
Next
End Sub
提示1:rTable.Resize并不会改变rTable,而是生成并返回一个新的Range。
提示2:Resize的参数必须大于0
提示3:以上程序可以不要r1变量
五、Range.Offset属性:按照Range的大小,根据指定的距离平行移动,从而得到一个新的同样形状的Range。
举例5:
Sub 偏移offset()
Dim r1 As Range, r2 As Range
Set r1 = Range("A3:b5")
Set r2 = r1.Offset(3, 5)
r2.Interior.Color = vbRed
End Sub
提示1:r1.Offset不会移动r1,而是生成并返回一个新的Range
提示2:Offset的参数可以是0,代表无偏移,负数代表向上/向左偏移。
举例6:
Sub Range属性实践()
Dim r1 As Range, r2 As Range
For Each r1 In ActiveSheet.UsedRange
If r1.Value = "上海市" Then
r1.CurrentRegion.Resize(1, 1).Offset(1, 4).Value = "未审核"
Exit For
End If
Next
End Sub
提示1:上述举例可以使用range.cells让代码变得更加简单。
网友评论