Sub Range29()
MsgBox Sheet1.Range("D5:E6").Rows(2).Address
MsgBox Sheet1.Range("D5:E6").Rows(2).EntireRow.Address
MsgBox Sheet1.Range("D5:E6").EntireRow.Address
End Sub
上のコードは順に $D$6:$E$6 $6:$6 $5:$6 を返します。 EntireRow プロパティは、Range Object を、包含する行全体に拡張します。
これと似た Row プロパティは、単一セルの行アドレスを返すもので、 Rows とは無関係です。
Sub Range30()
MsgBox Sheet1.Range("D5:E6").Columns(2).Address
MsgBox Sheet1.Range("D5:E6").Columns(2).EntireColumn.Address
MsgBox Sheet1.Range("D5:E6").EntireColumn.Address
End Sub
上のコードは順に $E$5:$E$6 $E:$E $D:$E を返します。 EntireColumn プロパティは、Range Object を、包含する行全体に拡張します。
これと似た Column プロパティは、単一セルの列アドレスを返すもので、 Coluumns とは無関係です。
Sub Range31()
Dim a As Range, b As Range
Set a = Sheet1.Range("D5:E6")
Set b = Sheet1.Rows(5)
MsgBox Intersect(a, b).Address
MsgBox Union(a, b).Address
End Sub
上のコードは順に $D$5:$E$5 $D$5:$E$6,$5:$5 を返します。
Sub Range32()
Dim x As Range, a As Variant, b As Variant
Dim c As Variant, d As Variant, e As Variant
Set x = Sheet1.Range("D5:E6,F8:F9,A10:C12")
a = x.Address
b = x.Count
c = x.Areas.Count
d = x.Areas(2).Address
e = Application.Index(x, 1, 2, 3)
Stop
End Sub
上のコードを実行すれば、 b には全体のセル数 15 が、 c には Areas で分解した時の Range の数 3 が入ります。セルに格納された値を取得するだけなら、 e のように、ワークシート関数の Index を利用することもできます。引数は、( Range, Row, Column, Area ) の順に指定します。
Sub Range33()
Dim x As Range, a As Sheets
Sheets(Array("Sheet1", "Sheet2")).Select
Range("B26:C26").Select
Selection.FormulaR1C1 = Array(45, "=RC[-1]")
End Sub