2 つの範囲があり、それぞれに 1 つのセルが含まれています (たとえば、「A1」と「C3」)。
これら 2 つの間のすべてのセル ("A1:C3") を含む新しい範囲を取得するにはどうすればよいですか?
私はこれを試しました:
Set NewRange = Range(Range1.Address:Range2.Address)
また、R1C1 形式で範囲を設定するにはどうすればよいですか? Range("A2") の代わりに Range("R1C2") のようなものを使いたいです。
このような?
Sub Sample()
Dim rng1 As Range, rng2 As Range
Dim NewRng As Range
With ThisWorkbook.Sheets("Sheet1")
Set rng1 = .Range("A1")
Set rng2 = .Range("C3")
Set NewRng = .Range(rng1.Address & ":" & rng2.Address)
Debug.Print NewRng.Address
End With
End Sub
R1C1 形式の代わりにCells(r,c). これにより、柔軟性と制御が向上します
したがって、次Range("A2")のように書くことができますCells(2,1)
さまざまな方法で新しい範囲を設定できます。以下にいくつかの例を示します。R1C1 形式を取得するには、個人的には、通常の式を入力してから、VBA を使用して必要な R1C1 形式を抽出する方が簡単だと思います。以下の debug.print ステートメントを参照してください。
Sub test()
Dim rng1 As Range
Dim rng2 As Range
Dim newRng As Range
With Sheet1
Set rng1 = .Range("A1")
Set rng2 = .Range("C3")
Debug.Print rng1.FormulaR1C1
Debug.Print rng1.FormulaR1C1Local
'Method1
Set newRng = .Range(rng1, rng2)
'method2
Set newRng = .Range(rng1.Address, rng2.Address)
'method3 (Only works if rng1 & rng2 are single cells
Set newRng = .Range(rng1.Address & ":" & rng2.Address)
'method4
Set newRng = Union(rng1, rng2)
End With
End Sub
次のようなことも可能です。
Dim newRange as Range
Set newRange = Range("A1:A4,A7:A9,C1:D9") 'Three different regions grouped
'or
Set newRange = Range("A1:A4,A7:A9,C1:D9, D10:D11") 'Four different regions grouped.
'or
Set newRange = Range("A1:A4,A7:A9,C1:D9, D10:D11, ...") 'N different regions grouped.