次の方法で共有


Range オブジェクト

重要

この記事は機械翻訳されています。機械翻訳についての「免責事項」をお読みください。この記事の英語版を参照するには、ここをクリックしてください。

セル、行、列、1 つ以上のセル範囲を含む選択範囲、または 3-D 範囲を表します。

Range オブジェクトを取得するプロパティおよびメソッドを次に示します。

  • Range プロパティ

  • Cells プロパティ

  • Range および Cells

  • Offset プロパティ

  • Union メソッド

使用例

1 つのセルまたはセル範囲を表す Range オブジェクトを取得するには、Range(arg) プロパティを使用します。引数 arg には、範囲を指定します。次の使用例は、セル A1 の値をセル A5 に入力します。

Worksheets("Sheet1").Range("A5").Value = _
    Worksheets("Sheet1").Range("A1").Value

使用例

次の使用例は、セル範囲 A1:H8 の各セルに、数式を使用して乱数を設定します。オブジェクト修飾子 (ピリオドの左側に記述するオブジェクト) を指定せずに使用した場合、Range プロパティは作業中のワークシートのセル範囲を返します。作業中のワークシートではない場合、このメソッドは失敗します。オブジェクト ID を指定せずに Range プロパティを使用するときは、その前に Activate メソッドを使用して、ワークシートをアクティブにします。

Worksheets("Sheet1").Activate
Range("A1:H8").Formula = "=Rand()"    'Range is on the active sheet

使用例

次の使用例は、Criteria という名前のセル範囲の内容を消去します。

注意

セル範囲の参照を引数に指定する場合、参照は A1 形式で指定します。R1C1 形式は使用できません。

Worksheets(1).Range("Criteria").ClearContents

使用例

1 つのセルを取得するには、Cells(row, column) プロパティを使用します。引数 row には行のインデックスを指定し、引数 column には列のインデックスを指定します。次の使用例は、セル A1 の値に 24 を設定します。

Worksheets(1).Cells(1, 1).Value = 24

使用例

次の使用例は、セル A2 に数式を設定します。

ActiveSheet.Cells(2, 1).Formula = "=Sum(B1:B5)"

使用例

Range("A1") という記述でセル A1 を取得することもできますが、Cells プロパティでは、行または列の指定に変数を使用できるため、便利な場合があります。次の使用例は、シート 1 に列見出しと行見出しを作成します。ワークシートをアクティブにした後は、シートを明示的に宣言せずに、Cells プロパティが使用でき、作業中のシートのセルを返します。

注意

Visual Basic の文字列関数を使用して A1 形式の参照文字列を変更することもできますが、Cells(1, 1) という記述の方が簡単であり、効率的なプログラミングの方法です。

Sub SetUpTable()
Worksheets("Sheet1").Activate
For TheYear = 1 To 5
    Cells(1, TheYear + 1).Value = 1990 + TheYear
Next TheYear
For TheQuarter = 1 To 4
    Cells(TheQuarter + 1, 1).Value = "Q" & TheQuarter
Next TheQuarter
End Sub

使用例

セル範囲の一部を取得するには、expression.Cells(row, column) を使用します。expression には、Range オブジェクトを返すオブジェクト式を指定し、引数 row と引数 column はセル範囲の左上端を基準にして指定します。次の使用例は、セル C5 に数式を設定します。

Worksheets(1).Range("C5:C10").Cells(1, 1).Formula = "=Rand()"

使用例

Range オブジェクトを取得するには、Range(cell1, cell2) プロパティを使用します。引数 cell1 には最初のセルを指定する Range オブジェクトを、引数 cell2 には最後のセルを指定するオブジェクトを指定します。次の使用例は、セル範囲 A1:J10 の罫線の種類を設定します。

注意

使用例では、すべての Cells プロパティの前にピリオドがあることに注意してください。使用例の最初の行にある With ステートメントの結果を Cells プロパティで使用するには、ピリオドが必要です。この使用例では、ワークシート 1 にあるセルを示しています。ピリオドを記述しない場合は、Cells プロパティは作業中のワークシートのセルを返します。

With Worksheets(1)
    .Range(.Cells(1, 1), _
        .Cells(10, 10)).Borders.LineStyle = xlThick
End With

使用例

あるセル範囲から指定された相対位置にあるセル範囲を取得するには、Offset(row, column) プロパティを使用します。引数 row には相対位置とする行を指定し、引数 column には相対位置とする列を指定します。次の使用例では、現在選択されているセル範囲の左上端のセルから 3 行下、1 列右のセルを選択します。作業中のワークシートのセルしか選択できないので、指定するセルのあるワークシートを最初に選択しておく必要があります。

Worksheets("Sheet1").Activate
  'Can't select unless the sheet is active
Selection.Offset(3, 1).Range("A1").Select

使用例

複数の選択範囲、つまり複数のセル範囲の集合を取得するには、Union(range1, range2, ...) メソッドを使用します。次の使用例では、オブジェクトを作成し、それをセル範囲 A1:B2 およびセル範囲 C3:D4 の集合として定義し、選択します。

Dim r1 As Range, r2 As Range, myMultiAreaRange As Range
Worksheets("sheet1").Activate
Set r1 = Range("A1:B2")
Set r2 = Range("C3:D4")
Set myMultiAreaRange = Union(r1, r2)
myMultiAreaRange.Select

使用例

複数の領域を含む選択範囲を操作する場合は、Areas プロパティを使用すると便利です。複数の選択範囲を個別の Range オブジェクトに分割した後、それをコレクションとして返します。取得されたコレクションの Count プロパティを使用すると、次の使用例のように、選択範囲に複数の領域が含まれているかどうかを確認できます。

Sub NoMultiAreaSelection()
    NumberOfSelectedAreas = Selection.Areas.Count
    If NumberOfSelectedAreas > 1 Then
        MsgBox "You cannot carry out this command " & _
            "on multi-area selections"
    End If
End Sub

注意

機械翻訳についての免責事項: この記事の翻訳はコンピューター システムによって行われており、人間の手は加えられていません。マイクロソフトでは、英語を話さないユーザーがマイクロソフトの製品、サービス、テクノロジに関するコンテンツを理解するのに役立てるため、こうした機械翻訳を提供しています。記事は機械翻訳されているため、用語、構文、文法などに誤りがある場合があります。