美文网首页
全民一起VBA提高篇-第十六回

全民一起VBA提高篇-第十六回

作者: 凯凯凯王 | 来源:发表于2020-03-25 18:03 被阅读0次

多区域合纵连横身形变幻 单元格定位精准边界分明

主要内容:

一、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让代码变得更加简单。

相关文章

网友评论

      本文标题:全民一起VBA提高篇-第十六回

      本文链接:https://www.haomeiwen.com/subject/wxmxuhtx.html