次の方法で共有


Excel の Visual Basic プロシージャを使用してセル/範囲を選択する方法

Microsoft は、例示のみを目的としてプログラミング例を提供しており、明示または黙示にかかわらず、いかなる責任も負わないものとします。 これには、市販性または特定の目的との適合性についての黙示の保証も含まれますが、これに限定はされません。 この記事は、説明されているプログラミング言語、手順を作成およびデバッグするために使用されているツールに読者が精通していることを前提にしています。 マイクロソフト サポート窓口では、特定のプロシージャの機能説明に関するご質問に対して支援いたしますが、本例を特定の目的を満たすために機能を追加したり、プロシージャを構築することは行いません。 この記事の例では、次の表に示す Visual Basic メソッドを使用します。

Method             Arguments
------------------------------------------
Activate           none
Cells              rowIndex, columnIndex
Application.Goto   reference, scroll
Offset             rowOffset, columnOffset
Range              cell1
                   cell1, cell2
Resize             rowSize, columnSize
Select             none
Sheets             index (or sheetName)
Workbooks          index (or bookName)
End                direction
CurrentRegion      none

この記事の例では、次の表のプロパティを使用します。

Property         Use
---------------------------------------------------------------------
ActiveSheet      to specify the active sheet
ActiveWorkbook   to specify the active workbook
Columns.Count    to count the number of columns in the specified item
Rows.Count       to count the number of rows in the specified item
Selection        to refer to the currently selected range

作業中のワークシートのセルを選択する方法

作業中のワークシートのセル D5 を選択するには、次のいずれかの例を使用します。

ActiveSheet.Cells(5, 4).Select
-or-
ActiveSheet.Range("D5").Select

同じブック内の別のワークシートのセルを選択する方法

同じブック内の別のワークシートのセル E6 を選択するには、次のいずれかの例を使用します。

Application.Goto ActiveWorkbook.Sheets("Sheet2").Cells(6, 5)
   -or-
Application.Goto (ActiveWorkbook.Sheets("Sheet2").Range("E6"))

または、ワークシートをアクティブ化し、上記の方法 1 を使用してセルを選択することもできます。

Sheets("Sheet2").Activate
ActiveSheet.Cells(6, 5).Select

別のブックのワークシート上のセルを選択する方法

別のブックのワークシートのセル F7 を選択するには、次のいずれかの例を使用します。

Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Cells(7, 6)
-or-
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("F7")

または、ワークシートをアクティブ化し、上記の方法 1 を使用してセルを選択することもできます。

Workbooks("BOOK2.XLS").Sheets("Sheet1").Activate
ActiveSheet.Cells(7, 6).Select

作業中のワークシートでセル範囲を選択する方法

作業中のワークシートで C2:D10 の範囲を選択するには、次のいずれかの例を使用できます。

ActiveSheet.Range(Cells(2, 3), Cells(10, 4)).Select
ActiveSheet.Range("C2:D10").Select
ActiveSheet.Range("C2", "D10").Select

or

ActiveSheet.Range(ActiveSheet.Cells(2, 3), ActiveSheet.Cells(10, 4)).Select

or, alternatively, it could be simplified to this:

Range(Cells(2, 3), Cells(10, 4)).Select

同じブック内の別のワークシート上のセル範囲を選択する方法

同じブック内の別のワークシートで範囲 D3:E11 を選択するには、次のいずれかの例を使用します。

Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3:E11")
Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3", "E11")

または、ワークシートをアクティブ化し、上記の方法 4 を使用して範囲を選択することもできます。

Sheets("Sheet3").Activate
ActiveSheet.Range(Cells(3, 4), Cells(11, 5)).Select

別のブックのワークシート上のセル範囲を選択する方法

別のブックのワークシートで E4:F12 の範囲を選択するには、次のいずれかの例を使用します。

Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("E4:F12")
Application.Goto _
      Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("E4", "F12")

または、ワークシートをアクティブ化し、上記の方法 4 を使用して範囲を選択することもできます。

Workbooks("BOOK2.XLS").Sheets("Sheet1").Activate
   ActiveSheet.Range(Cells(4, 5), Cells(12, 6)).Select

作業中のワークシートで名前付き範囲を選択する方法

作業中のワークシートで名前付き範囲 "Test" を選択するには、次のいずれかの例を使用します。

Range("Test").Select
Application.Goto "Test"

同じブック内の別のワークシートで名前付き範囲を選択する方法

同じブック内の別のワークシートで名前付き範囲 "Test" を選択するには、次の例を使用します。

Application.Goto Sheets("Sheet1").Range("Test")

または、ワークシートをアクティブ化し、上記の方法 7 を使用して名前付き範囲を選択することもできます。

Sheets("Sheet1").Activate
Range("Test").Select

別のブックのワークシートで名前付き範囲を選択する方法

別のブックのワークシートで名前付き範囲 "Test" を選択するには、次の例を使用します。

Application.Goto _
   Workbooks("BOOK2.XLS").Sheets("Sheet2").Range("Test")

または、ワークシートをアクティブ化し、上記の方法 7 を使用して名前付き範囲を選択することもできます。

Workbooks("BOOK2.XLS").Sheets("Sheet2").Activate
Range("Test").Select

作業中のセルに対してセルを選択する方法

アクティブセルの左側にある 5 行と 4 列のセルを選択するには、次の例を使用します。

ActiveCell.Offset(5, -4).Select

作業中のセルの右側にある 2 行と 3 列のセルを選択するには、次の例を使用します。

ActiveCell.Offset(-2, 3).Select

注:

"ワークシートから外れた" セルを選択しようとすると、エラーが発生します。上に示した最初の例では、アクティブセルが列 A から D の場合、4 つの列を左に移動するとアクティブセルが無効なセル アドレスに移動されるため、エラーが返されます。

別の (アクティブではない) セルに対してセルを選択する方法

下に 5 行、セル C7 の右側に 4 列のセルを選択するには、次のいずれかの例を使用します。

ActiveSheet.Cells(7, 3).Offset(5, 4).Select
ActiveSheet.Range("C7").Offset(5, 4).Select

指定した範囲からセルの範囲オフセットを選択する方法

名前付き範囲 "Test" と同じサイズで、4 行下にシフトされ、右に 3 列のセル範囲を選択するには、次の例を使用します。

ActiveSheet.Range("Test").Offset(4, 3).Select

名前付き範囲が別の (アクティブではない) ワークシート上にある場合は、最初にそのワークシートをアクティブ化し、次の例を使用して範囲を選択します。

Sheets("Sheet3").Activate
ActiveSheet.Range("Test").Offset(4, 3).Select

指定した範囲を選択し、選択範囲のサイズを変更する方法

名前付き範囲 "Database" を選択し、選択範囲を 5 行延長するには、次の例を使用します。

Range("Database").Select
Selection.Resize(Selection.Rows.Count + 5, _
   Selection.Columns.Count).Select

指定した範囲を選択してオフセットし、サイズを変更する方法

名前付き範囲 "データベース" の右側にある 4 行と 3 列の範囲を選択し、名前付き範囲より 2 行と 1 列多くを含めるには、次の例を使用します。

Range("Database").Select
Selection.Offset(4, 3).Resize(Selection.Rows.Count + 2, _
   Selection.Columns.Count + 1).Select

指定された 2 つ以上の範囲の和集合を選択する方法

2 つの名前付き範囲 "Test" と "Sample" の和集合 (つまり結合領域) を選択するには、次の例を使用します。

Application.Union(Range("Test"), Range("Sample")).Select

注:

この例を機能させるには、両方の範囲が同じワークシート上にある必要があります。 Union メソッドはシート間では機能しないことにも注意してください。 たとえば、この行は正常に動作します。

Set y = Application.Union(Range("Sheet1!A1:B2"), Range("Sheet1!C3:D4"))

ただし、この行

Set y = Application.Union(Range("Sheet1!A1:B2"), Range("Sheet2!C3:D4"))

はエラー メッセージを返します。

アプリケーション クラスの Union メソッドが失敗しました

指定された 2 つ以上の範囲の積集合を選択する方法

"Test" と "Sample" という 2 つの名前付き範囲の交差部分を選択するには、次の例を使用します。

Application.Intersect(Range("Test"), Range("Sample")).Select

この例を機能させるには、両方の範囲が同じワークシート上にある必要があることに注意してください。

この記事の例 17 から 21 は、次のサンプル データ セットを参照しています。 各例では、選択されるサンプル データ内のセル範囲を示します。

A1: Name    B1: Sales    C1: Quantity
A2: a       B2: $10      C2: 5
A3: b       B3:          C3: 10
A4: c       B4: $10      C4: 5
A5:         B5:          C5:
A6: Total   B6: $20      C6: 20

連続データの列の最後のセルを選択する方法

連続する列の最後のセルを選択するには、次の例を使用します。

ActiveSheet.Range("a1").End(xlDown).Select

このコードをサンプル テーブルと共に使用すると、セル A4 が選択されます。

連続データの列の下部にある空白セルを選択する方法

連続するセルの範囲の下にあるセルを選択するには、次の例を使用します。

ActiveSheet.Range("a1").End(xlDown).Offset(1,0).Select

このコードをサンプル テーブルと共に使用すると、セル A5 が選択されます。

列内の連続するセル範囲全体を選択する方法

列内の連続するセルの範囲を選択するには、次のいずれかの例を使用します。

ActiveSheet.Range("a1", ActiveSheet.Range("a1").End(xlDown)).Select
   -or-
ActiveSheet.Range("a1:" & ActiveSheet.Range("a1"). _
      End(xlDown).Address).Select

このコードをサンプル テーブルと共に使用すると、セル A1 から A4 が選択されます。

列内の連続していないセルの範囲全体を選択する方法

連続していないセル範囲を選択するには、次のいずれかの例を使用します。

ActiveSheet.Range("a1",ActiveSheet.Range("a" & ActiveSheet.Rows.Count).End(xlUp)).Select
   -or-
ActiveSheet.Range("a1:" & ActiveSheet.Range("a" & ActiveSheet.Rows.Count). _
   End(xlUp).Address).Select

このコードをサンプル テーブルと共に使用すると、セル A1 から A6 が選択されます。

セルの四角形範囲を選択する方法

セルの周囲にある四角形のセル範囲を選択するには、CurrentRegion メソッドを使用します。 CurrentRegion メソッドによって選択される範囲は、空白行と空白列の任意の組み合わせによって囲まれた領域です。 CurrentRegion メソッドを使用する方法の例を次に示します。

ActiveSheet.Range("a1").CurrentRegion.Select

このコードでは、セル A1 から C4 を選択します。 セルの同じ範囲を選択するその他の例を次に示します。

ActiveSheet.Range("a1", _
   ActiveSheet.Range("a1").End(xlDown).End(xlToRight)).Select
   -or-
ActiveSheet.Range("a1:" & _
   ActiveSheet.Range("a1").End(xlDown).End(xlToRight).Address).Select

場合によっては、セル A1 から C6 を選択することもできます。 この例では、行 5 の空白行が原因で CurrentRegion メソッドは機能しません。 次の例では、すべてのセルを選択します。

lastCol = ActiveSheet.Range("a1").End(xlToRight).Column
lastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, lastCol).End(xlUp).Row
ActiveSheet.Range("a1", ActiveSheet.Cells(lastRow, lastCol)).Select
    -or-
lastCol = ActiveSheet.Range("a1").End(xlToRight).Column
lastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, lastCol).End(xlUp).Row
ActiveSheet.Range("a1:" & _
   ActiveSheet.Cells(lastRow, lastCol).Address).Select

長さが異なる複数の連続しない列を選択する方法

長さが異なる複数の連続しない列を選択するには、次のサンプル テーブルとマクロの例を使用します。

A1: 1  B1: 1  C1: 1  D1: 1
A2: 2  B2: 2  C2: 2  D2: 2
A3: 3  B3: 3  C3: 3  D3: 3
A4:    B4: 4  C4: 4  D4: 4
A5:    B5: 5  C5: 5  D5:
A6:    B6:    C6: 6  D6:
StartRange = "A1"
EndRange = "C1"
Set a = Range(StartRange, Range(StartRange).End(xlDown))
Set b = Range(EndRange, Range(EndRange).End(xlDown))
Union(a,b).Select

このコードをサンプル テーブルと共に使用すると、セル A1:A3 と C1:C6 が選択されます。

例に関する注意事項

ActiveSheet プロパティは、通常は省略できます。これは、特定のシートに名前が付かない場合に暗黙的に指定されるためです。 たとえば、

ActiveSheet.Range("D5").Select

次を使用できます。

Range("D5").Select

ActiveWorkbook プロパティは、通常は省略することもできます。 特定のブックに名前が付いていない限り、アクティブなブックは暗黙的に指定されます。

Application.Goto メソッドを使用する場合、指定した範囲が別の (アクティブではない) ワークシート上にあるときに、Range メソッド内で 2 つの Cells メソッドを使用する場合は、毎回 Sheets オブジェクトを含める必要があります。 以下に例を示します。

    With ActiveWorkbook.Sheets("Sheet1")
        Application.Goto .Range(.Cells(2, 3), .Cells(4, 5))
    End With

引用符で囲まれた項目 (名前付き範囲 "Test" など) の場合は、値がテキスト文字列である変数を使用することもできます。 たとえば、

ActiveWorkbook.Sheets("Sheet1").Activate

を使用できます。

ActiveWorkbook.Sheets(myVar).Activate

ここで、myVar の値は "Sheet1" です。