Range オブジェクト (Excel)Range object (Excel)

セル、行、列、連続した1つ以上のセルブロックを含むセルの選択、または3D範囲を表します。Represents a cell, a row, a column, a selection of cells containing one or more contiguous blocks of cells, or a 3D range.

注意

複数のプラットフォーム間で Office エクスペリエンスを拡張するソリューションを開発することに関心がありますか?Interested in developing solutions that extend the Office experience across multiple platforms? 新しい Office アドイン モデルを参照してください。Check out the new Office Add-ins model. Office アドインには、VSTO アドインおよびソリューションと比較して、小さな設置面積があります。 HTML5、JavaScript、CSS3、XML など、ほぼすべての web プログラミングテクノロジを使用して構築できます。Office Add-ins have a small footprint compared to VSTO Add-ins and solutions, and you can build them by using almost any web programming technology, such as HTML5, JavaScript, CSS3, and XML.

注釈Remarks

Range の既定のメンバーは、パラメーターなしの呼び出しを Value プロパティに転送し、パラメーター付きの呼び出しを Item メンバーに転送します。The default member of Range forwards calls without parameters to the Value property and calls with parameters to the Item member. したがって、someRange = someOtherRangesomeRange.Value = someOtherRange.ValuesomeRange(1)someRange.Item(1)someRange(1,1)someRange.Item(1,1)と同等です。Accordingly, someRange = someOtherRange is equivalent to someRange.Value = someOtherRange.Value, someRange(1) to someRange.Item(1) and someRange(1,1) to someRange.Item(1,1).

Range オブジェクトを取得するプロパティおよびメソッドを次に示しますセクション:The following properties and methods for returning a Range object are described in the Example section:

  • Range と**Cells** プロパティワークシートオブジェクトRange and Cells properties of the Worksheet object
  • Range と**Cells** プロパティRangeオブジェクトRange and Cells properties of the Range object
  • Rows および Columns プロパティ (Worksheet オブジェクト内)Range and Cells properties of the Worksheet object
  • Rows および Columns プロパティ (Range オブジェクト内)Range and Cells properties of the Range object
  • Offset プロパティRangeオブジェクトOffset property of the Range object
  • Union メソッドアプリケーションオブジェクトUnion method of the Application object

Example

1 つのセルまたはセル範囲を表す Range オブジェクトを返すには、Range ( arg ) プロパティを使用し_arg_ によって、範囲の名前を付けます。Use Range (arg), where arg names the range, to return a Range object that represents a single cell or a range of cells. 次の例では、セル A1 の値をセル A5 に入力します。The following example places the value of cell A1 in cell A5.

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

次の使用例は、セル範囲 A1:H8 の各セルに、数式を使用して乱数を設定します。The following example fills the range A1:H8 with random numbers by setting the formula for each cell in the range. オブジェクト修飾子 (ピリオドの左側に記述するオブジェクト) を指定せずに使用した場合、Range プロパティは作業中のワークシートの範囲を返します。When it's used without an object qualifier (an object to the left of the period), the Range property returns a range on the active sheet. 作業中のワークシートではない場合、このメソッドは失敗します。If the active sheet isn't a worksheet, the method fails.

ワークシートをアクティブにするには、Range プロパティをオブジェクト修飾子なしで使う前に、Worksheet オブジェクトの Activate メソッドを使います。Use the Activate method of the Worksheet object to activate a worksheet before you use the Range property without an explicit object qualifier.

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

次の使用例は、Criteria という名前のセル範囲の内容を消去します。The following example clears the contents of the range named Criteria.

注意

範囲アドレスに文字列引数を使用する場合、アドレスは A1 スタイルの形式で指定する必要があります。R1C1 スタイルの形式は使用できません。If you use a text argument for the range address, you must specify the address in A1-style notation (you cannot use R1C1-style notation).

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

ワークシート上のセルを使用して、ワークシート上のすべての単一セルで構成される範囲を取得します。Use Cells on a worksheet to obtain a range consisting all single cells on the worksheet. Item (rowcolumn) を介して単一のセルにアクセスできます。row は行インデックスで、column は列インデックスです。You can access single cells via Item(row, column), where row is the row index and column is the column index. Item は省略できます。呼び出しは Range のデフォルト メンバーによって転送されるためです。Item can be omitted since the call is forwarded to it by the default member of Range. 以下の例では、アクティブなブックの最初のシートのセル A1 の値を 24 に、セル B1 の値を 42 に設定します。The following example sets the value of cell A1 to 24 and of cell B1 to 42 on the first sheet of the active workbook.

Worksheets(1).Cells(1, 1).Value = 24
Worksheets(1).Cells.Item(1, 2).Value = 42

次の使用例は、セル A2 に数式を設定します。The following example sets the formula for cell A2.

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

Range("A1") を使用してセル A1 を返すこともできますが、Cells プロパティでは、行または列の指定に変数を使用できるため、より便利です。Although you can also use Range("A1") to return cell A1, there may be times when the Cells property is more convenient because you can use a variable for the row or column. 次の例では、シート 1 に列見出しと行見出しを作成します。The following example creates column and row headings on Sheet1. ワークシートをアクティブにした後は、Cells プロパティを使用できます。シートを明示的に宣言する必要はありません。作業中のシートのセルが返されます。Be aware that after the worksheet has been activated, the Cells property can be used without an explicit sheet declaration (it returns a cell on the active sheet).

注意

A1 形式の参照を変更するのに Visual Basic の文字列関数を使用することもできますが、Cells(1, 1) 形式を使用したほうが簡単であり、より効率的なプログラミングを実践できます。Although you could use Visual Basic string functions to alter A1-style references, it is easier (and better programming practice) to use the Cells(1, 1) notation.

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

Use_expression_.Cells は、expression が単一のセルで構成される同じアドレスを持つ範囲を取得する Range オブジェクトを返す式を持ちます。Use_expression_.Cells, where expression is an expression that returns a Range object, to obtain a range with the same address consisting of single cells. そのような範囲では、Item (rowcolumn) を介して単一のセルにアクセスします。これは、範囲の最初の領域の左上隅に関連しています。On such a range, you access single cells via Item(row, column), where are relative to the upper-left corner of the first area of the range. Item は省略できます。呼び出しは Range のデフォルト メンバーによって転送されるためです。Item can be omitted since the call is forwarded to it by the default member of Range. 以下の例では、アクティブなブックの最初のシートのセル C5 と D5 に数式を設定します。The following example sets the formula for cell C5 and D5 of the first sheet of the active workbook.

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

Range オブジェクトを返すには、Range ( cell1, cell2 ) プロパティを使用します。ここで、引数 cell1 および引数 cell2 は開始セルおよび終了セルを指定する Range オブジェクトです。Use Range (cell1, cell2), where cell1 and cell2 are Range objects that specify the start and end cells, to return a Range object. 次の例では、セル範囲 A1:J10 の罫線の種類を設定します。The following example sets the border line style for cells A1:J10.

注意

上記のWithステートメントの結果をCellsプロパティに適用する場合には、すべてのCells プロパティの前にピリオドが必要になることに注意してください。Be aware that the period in front of each occurrence of the Cells property is required if the result of the preceding With statement is to be applied to the Cells property. この場合、セルがワークシートにあることを示しています (ピリオドがない場合、Cells プロパティは、作業中のワークシートのセルを返します)。In this case, it indicates that the cells are on worksheet one (without the period, the Cells property would return cells on the active sheet).

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

ワークシート上のを使用して、ワークシート上のすべての行で構成される範囲を取得します。Use Rows on a worksheet to obtain a range consisting all rows on the worksheet. Item (row) を使用して、単一の行にアクセスできます。row は行インデックスです。You can access single rows via Item(row), where row is the row index. Item は省略できます。呼び出しは Range のデフォルト メンバーによって転送されるためです。Item can be omitted since the call is forwarded to it by the default member of Range.

注意

行で構成される範囲に Item の 2 番目のパラメーターを提供することはできません。It is not legal to provide the second parameter of Item for ranges consisting of rows. 最初に Cells を介して単一のセルに変換する必要があります。You first have to convert it to single cells via Cells.

以下の例では、アクティブなブックの最初のシートの行 4 と 10 を削除します。The following example deletes row 4 and 10 of the first sheet of the active workbook.

Worksheets(1).Rows(10).Delete
Worksheets(1).Rows.Item(5).Delete

ワークシート上のを使用して、ワークシート上のすべての列で構成される範囲を取得します。Use Columns on a worksheet to obtain a range consisting all columns on the worksheet. Item (row) [sic] を介して単一の列にアクセスできます。row は、数値または A1 スタイルの列アドレスとして指定された列インデックスです。You can access single columns via Item(row) [sic], where row is the column index given as a number or as an A1-style column address. Item は省略できます。呼び出しは Range のデフォルト メンバーによって転送されるためです。Item can be omitted since the call is forwarded to it by the default member of Range.

注意

列で構成される範囲に Item の 2 番目のパラメーターを提供することはできません。It is not legal to provide the second parameter of Item for ranges consisting of columns. 最初に Cells を介して単一のセルに変換する必要があります。You first have to convert it to single cells via Cells.

以下の例では、アクティブなブックの最初のシートの列 "B"、"C"、"E" および "J" を削除します。The following example deletes column "B", "C", "E", and "J" of the first sheet of the active workbook.

Worksheets(1).Columns(10).Delete
Worksheets(1).Columns.Item(5).Delete
Worksheets(1).Columns("C").Delete
Worksheets(1).Columns.Item("B").Delete

Use_expression_.Rows は、expression が範囲の最初の領域の行で構成される範囲を取得する Range オブジェクトを返す式を持ちます。Use_expression_.Rows, where expression is an expression that returns a Range object, to obtain a range consisting of the rows in the first area of the range. Item (row) を介して単一の行にアクセスできます。_row_は、範囲の最初の領域の上部からの相対的な行インデックスです。You can access single rows via Item(row), where row is the relative row index from the top of the first area of the range. Item は省略できます。呼び出しは Range のデフォルト メンバーによって転送されるためです。Item can be omitted since the call is forwarded to it by the default member of Range.

注意

行で構成される範囲に Item の 2 番目のパラメーターを提供することはできません。It is not legal to provide the second parameter of Item for ranges consisting of rows. 最初に Cells を介して単一のセルに変換する必要があります。You first have to convert it to single cells via Cells.

以下の例では、アクティブなブックの最初のシートの範囲 C8:D8 および C6:D6 を削除します。The following example deletes the ranges C8:D8 and C6:D6 of the first sheet of the active workbook.

Worksheets(1).Range("C5:D10").Rows(4).Delete
Worksheets(1).Range("C5:D10").Rows.Item(2).Delete

Use_expression_.Columns は、expression が範囲の最初の領域の列で構成される範囲を取得する Range オブジェクトを返す式を持ちます。Use_expression_.Columns, where expression is an expression that returns a Range object, to obtain a range consisting of the columns in the first area of the range. Item (row) [sic] を介して単一の列にアクセスできます。_row_は、数値または A1 スタイルの列アドレスとして指定された範囲の最初の領域の左からの相対列インデックスです。You can access single columns via Item(row) [sic], where row is the relative column index from the left of the first area of the range given as a number or as an A1-style column address. Item は省略できます。呼び出しは Range のデフォルト メンバーによって転送されるためです。Item can be omitted since the call is forwarded to it by the default member of Range.

注意

列で構成される範囲に Item の 2 番目のパラメーターを提供することはできません。It is not legal to provide the second parameter of Item for ranges consisting of columns. 最初に Cells を介して単一のセルに変換する必要があります。You first have to convert it to single cells via Cells.

以下の例では、アクティブなブックの最初のシートの範囲 L2:L10、G2:G10、F2:F10 および D2:D10 を削除します。The following example deletes the ranges L2:L10, G2:G10, F2:F10 and D2:D10 of the first sheet of the active workbook.

Worksheets(1).Range("C5:Z10").Columns(10).Delete
Worksheets(1).Range("C5:Z10").Columns.Item(5).Delete
Worksheets(1).Range("C5:Z10").Columns("D").Delete
Worksheets(1).Range("C5:Z10").Columns.Item("B").Delete

指定されたオフセットの範囲を別の範囲に返すには、Offset ( row, column ) プロパティを使用します。ここで、引数 row は行のオフセット、引数 column は列のオフセットです。Use Offset (row, column), where row and column are the row and column offsets, to return a range at a specified offset to another range. 次の例では、現在の選択範囲の左上隅にあるセル から3 行下で、1列右側を選択します。The following example selects the cell three rows down from and one column to the right of the cell in the upper-left corner of the current selection. 作業中のワークシートではない場合、セルを選択できません。最初にワークシートをアクティブにしてください。You cannot select a cell that is not on the active sheet, so you must first activate the worksheet.

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

複数領域の範囲、つまり複数の隣接するセル ブロックで構成される範囲を返すには、Union ( range1, range2, ...) を使用します。Use Union (range1, range2, ...) to return multiple-area ranges—that is, ranges composed of two or more contiguous blocks of cells. 次の例では、セル範囲 A1:B2 およびセル範囲 C3:D4 の集合として定義されるオブジェクトを作成し、定義された範囲を選択します。The following example creates an object defined as the union of ranges A1:B2 and C3:D4, and then selects the defined range.

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 プロパティを使用すると便利です。If you work with selections that contain more than one area, the Areas property is useful. 複数の選択範囲を個別の Range オブジェクトに分割した後、それをコレクションとして返します。It divides a multiple-area selection into individual Range objects and then returns the objects as a collection. 取得されたコレクションの Count プロパティを使用すると、次の使用例のように、複数の領域が含まれている選択範囲を確認できます。You can use the Count property on the returned collection to verify a selection that contains more than one area, as shown in the following example.

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

次の例は、Range オブジェクトの AdvancedFilter メソッドを使用して、列 A の範囲内で一意の値とその出現回数を示すリストを作成します。This example uses the AdvancedFilter method of the Range object to create a list of the unique values, and the number of times those unique values occur, in the range of column A.

Sub Create_Unique_List_Count()
    'Excel workbook, the source and target worksheets, and the source and target ranges.
    Dim wbBook As Workbook
    Dim wsSource As Worksheet
    Dim wsTarget As Worksheet
    Dim rnSource As Range
    Dim rnTarget As Range
    Dim rnUnique As Range
    'Variant to hold the unique data
    Dim vaUnique As Variant
    'Number of unique values in the data
    Dim lnCount As Long
    
    'Initialize the Excel objects
    Set wbBook = ThisWorkbook
    With wbBook
        Set wsSource = .Worksheets("Sheet1")
        Set wsTarget = .Worksheets("Sheet2")
    End With
    
    'On the source worksheet, set the range to the data stored in column A
    With wsSource
        Set rnSource = .Range(.Range("A1"), .Range("A100").End(xlDown))
    End With
    
    'On the target worksheet, set the range as column A.
    Set rnTarget = wsTarget.Range("A1")
    
    'Use AdvancedFilter to copy the data from the source to the target,
    'while filtering for duplicate values.
    rnSource.AdvancedFilter Action:=xlFilterCopy, _
                            CopyToRange:=rnTarget, _
                            Unique:=True
                            
    'On the target worksheet, set the unique range on Column A, excluding the first cell
    '(which will contain the "List" header for the column).
    With wsTarget
        Set rnUnique = .Range(.Range("A2"), .Range("A100").End(xlUp))
    End With
    
    'Assign all the values of the Unique range into the Unique variant.
    vaUnique = rnUnique.Value
    
    'Count the number of occurrences of every unique value in the source data,
    'and list it next to its relevant value.
    For lnCount = 1 To UBound(vaUnique)
        rnUnique(lnCount, 1).Offset(0, 1).Value = _
            Application.Evaluate("COUNTIF(" & _
            rnSource.Address(External:=True) & _
            ",""" & rnUnique(lnCount, 1).Text & """)")
    Next lnCount
    
    'Label the column of occurrences with "Occurrences"
    With rnTarget.Offset(0, 1)
        .Value = "Occurrences"
        .Font.Bold = True
    End With

End Sub

メソッドMethods

プロパティProperties

関連項目See also

サポートとフィードバックSupport and feedback

Office VBA またはこの説明書に関するご質問やフィードバックがありますか?Have questions or feedback about Office VBA or this documentation? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.