多區(qū)域合縱連橫身形變幻 單元格定位精準邊界分明
主要內(nèi)容:
一、Range對象的Union屬性
Application.Union方法:把多個Range聯(lián)合在一起,作為一個新的Range對象返回。
舉例1:
Sub 合并單元格區(qū)域()
? ? 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的表達方法拯刁。以及單元格區(qū)域的Interior屬性
提示2:可省略Union前面的Application
二、Application.Intersect方法:找到同時屬于多個Range的單元格(即重疊部分),作為一個新的Range對象返回蓝谨。
舉例2:
Sub 合并單元格區(qū)域()
? ? 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的最大連續(xù)使用區(qū)域青团。該區(qū)域與其他任何已使用單元格都不臨街譬巫。
舉例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的參數(shù)必須大于0
提示3:以上程序可以不要r1變量
五烟零、Range.Offset屬性:按照Range的大小瘪松,根據(jù)指定的距離平行移動,從而得到一個新的同樣形狀的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的參數(shù)可以是0,代表無偏移墅诡,負數(shù)代表向上/向左偏移壳嚎。
舉例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讓代碼變得更加簡單。