24

2 つの範囲があり、それぞれに 1 つのセルが含まれています (たとえば、「A1」と「C3」)。

これら 2 つの間のすべてのセル ("A1:C3") を含む新しい範囲を取得するにはどうすればよいですか?

私はこれを試しました:

Set NewRange = Range(Range1.Address:Range2.Address)

また、R1C1 形式で範囲を設定するにはどうすればよいですか? Range("A2") の代わりに Range("R1C2") のようなものを使いたいです。

4

5 に答える 5

28

このような?

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)

于 2012-09-21T09:31:16.527 に答える
16

さまざまな方法で新しい範囲を設定できます。以下にいくつかの例を示します。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
于 2012-09-21T09:31:59.453 に答える
2

次のようなことも可能です。

    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.
于 2017-02-11T00:35:12.170 に答える