Excel で Visual Basic プロシージャを使用して、セルおよびセル範囲を選択する方法

Office 2003 のサポートは終了しました

マイクロソフトでは、2014 年 4 月 8 日に Office 2003 のサポートを終了しました。この変更は、ソフトウェアの更新プログラムおよびセキュリティ オプションに影響しています。 この変更の意味および保護された状態を維持する方法について説明します。

この記事は、以前は次の ID で公開されていました: JP291308
詳細
マイクロソフトは、この情報をプログラミング言語の使用方法の一例として提供するだけであり、市場性および特定目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。この資料は、例示されているプログラミング言語やプロシージャの作成およびデバッグに使用するツールについて理解されているユーザーを対象としています。Microsoft Support 担当者は、特定のプロシージャの機能についての問い合わせにはお答えできますが、ユーザー固有の目的に合わせた機能の追加、プロシージャの作成などの内容変更は行っておりません。

この資料の例では、次の表に示した Visual Basic のメソッドを使用しています。
   メソッド               引数   ------------------------------------------   Activate           なし   Cells              rowIndex, columnIndex   Application.Goto   reference, scroll   Offset             rowOffset, columnOffset   Range              cell1                      cell1, cell2   Resize             rowSize, columnSize   Select             なし   Sheets             index (または sheetName)   Workbooks          index (または bookName)   End                direction   CurrentRegion      なし				
この資料の例では、次の表のプロパティを使用しています。
   プロパティ           用途   ---------------------------------------------------------------------   ActiveSheet      アクティブ シートを指定します。   ActiveWorkbook   アクティブ ブックを指定します。   Columns.Count    指定された項目の列数をカウントします。   Rows.Count       指定された項目の行数をカウントします。   Selection        現在選択されている範囲を参照します。				

1 : アクティブ ワークシート上のセルの選択方法

アクティブ シート上のセル D5 を選択するには、次の例のいずれかを使用します。
ActiveSheet.Cells(5, 4).Select				
または
ActiveSheet.Range("D5").Select				

2 : 同じブック内の別のワークシート上のセルの選択方法

同じブック内の別のワークシート上のセル E6 を選択するには、次の例のいずれかを使用します。
Application.Goto ActiveWorkbook.Sheets("Sheet2").Cells(6, 5)				
または				
Application.Goto (ActiveWorkbook.Sheets("Sheet2").Range("E6"))				
または、ワークシートをアクティブにし、上記の方法 1 を使用してセルを選択します。
Sheets("Sheet2").ActivateActiveSheet.Cells(6, 5).Select				

3 : 別のブックのワークシート上のセルの選択方法

別のブックにあるワークシート上のセル F7 を選択するには、次の例のいずれかを使用します。
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Cells(7, 6)				
または
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("F7")				
または、ワークシートをアクティブにし、上記の方法 1 を使用してセルを選択します。
Workbooks("BOOK2.XLS").Sheets("Sheet1").ActivateActiveSheet.Cells(7, 6).Select				

4 : アクティブ ワークシート上のセル範囲の選択方法

アクティブ ワークシート上のセル範囲 C2:D10 を選択するには、次の例のいずれかを使用します。
ActiveSheet.Range(Cells(2, 3), Cells(10, 4)).Select				
ActiveSheet.Range("C2:D10").Select				
ActiveSheet.Range("C2", "D10").Select				

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

同じブック内の別のワークシート上のセル範囲 D3:E11 を選択するには、次の例のいずれかを使用します。
Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3:E11")				
Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3", "E11")				
または、ワークシートをアクティブにし、セル範囲を選択するために上記の方法 4 を使用します。
Sheets("Sheet3").ActivateActiveSheet.Range(Cells(3, 4), Cells(11, 5)).Select				

6 : 別のブックのワークシート上のセル範囲の選択方法

別のブックのワークシート上のセル範囲 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				

7 : アクティブ ワークシート上の名前の範囲の選択方法

アクティブ ワークシート上の名前の範囲 "Test" を選択するには、次の例のいずれかを使用します。
Range("Test").Select				
Application.Goto "Test"				

8 : 同じブック内の別のワークシート上の名前の範囲の選択方法

同じブック内の別のワークシート上の名前の範囲 "Test" を選択するには、次の例を使用します。
Application.Goto Sheets("Sheet1").Range("Test")				
または、ワークシートをアクティブにし、上記の方法 7 を使用して名前の範囲を選択します。
Sheets("Sheet1").ActivateRange("Test").Select				

9 : 別のブックのワークシート上の名前の範囲の選択方法

別のブックのワークシート上の名前の範囲 "Test" を選択するには、次の例を使用します。
Application.Goto _   Workbooks("BOOK2.XLS").Sheets("Sheet2").Range("Test")				
または、ワークシートをアクティブにし、上記の方法 7 を使用して名前の範囲を選択します。
Workbooks("BOOK2.XLS").Sheets("Sheet2").ActivateRange("Test").Select				

10 : アクティブ セルから相対位置にあるセルを選択する方法

アクティブ セルの 5 行下、4 列左のセルを選択するには、次の例を使用します。
ActiveCell.Offset(5, -4).Select				
アクティブ セルの 2 行上、3 列右のセルを選択するには、次の例を使用します。
ActiveCell.Offset(-2, 3).Select				
: "ワークシートの外" のセルを選択すると、エラーが発生します。上に示されている最初の例では、アクティブ セルが "A" から "D" のいずれかの列にある場合、左に 4 列移動すると無効なセル位置となるため、エラーを返します。

11 : 別の (非アクティブな) セル相対にセルを選択する方法

セルの C7 の 5 行下、4 列右のセルを選択するには、次の例のいずれかを使用します。
ActiveSheet.Cells(7, 3).Offset(5, 4).Select				
ActiveSheet.Range("C7").Offset(5, 4).Select				

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

名前の範囲"Test" と範囲の大きさが同じで、4 行下、3 列右の位置に移動したセル範囲を選択するには、次の例を使用します。
ActiveSheet.Range("Test").Offset(4, 3).Select				
名前の範囲が別の (非アクティブの) ワークシートにある場合は、まずワークシートをアクティブにし、それから次の例で使用されているセル範囲を選択します。
Sheets("Sheet3").ActivateActiveSheet.Range("Test").Offset(4, 3).Select				

13 : 指定した範囲を選択し、選択範囲を変更する方法

名前の範囲 "Database" を選択し、選択範囲を 5 行拡張するには、次の例を使用します。
Range("Database").SelectSelection.Resize(Selection.Rows.Count + 5, _   Selection.Columns.Count).Select				

14 : 指定した範囲を選択し、オフセットで選択範囲を変更する方法

名前の範囲 "Database" から 4 行下、3 列右のセル範囲を選択し、選択範囲を名前の範囲より 2 行、1 列拡張するには、次の例を使用します。
Range("Database").SelectSelection.Offset(4, 3).Resize(Selection.Rows.Count + 2, _   Selection.Columns.Count + 1).Select				

15 : 2 つ以上の指定した範囲を選択する方法

2 つの名前の範囲 "Test" と "Sample" の両方を選択するには、次の例を使用します。
Application.Union(Range("Test"), Range("Sample")).Select				
この例を実行するには、2 つのセル範囲が同じワークシート上に存在する必要があります。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' メソッドは失敗しました。'_Application' オブジェクト

16 : 2 つ以上の指定した範囲の共有範囲 (重複範囲) の選択方法

2 つの名前の範囲 "Test" と Sample" の共有範囲を選択するには、次の例を使用します。
Application.Intersect(Range("Test"), Range("Sample")).Select				
この例を実行するには、2 つの範囲が同じワークシート上に存在する必要があります。

この資料の例 17 から 21 までは、次のサンプル データを参照しています。それぞれの例は、サンプル データのセル範囲が選択されることを示しています。
   A1: 名前     B1: 売上       C1: 数量   A2: a       B2: $10      C2: 5   A3: b       B3:          C3: 10   A4: c       B4: $10      C4: 5   A5:         B5:          C5:   A6: 合計     B6: $20      C6: 20				

17 : 連続してデータが存在する列の最後のセルを選択する方法

連続してデータが存在する列の最後のセルを選択するには、次の例を使用します。
ActiveSheet.Range("a1").End(xlDown).Select				
このコードをサンプルの表で使用すると、セル A4 が選択されます。

18 : 連続してデータが存在する列の下の空白セルを選択する方法

連続してデータが存在する列の下の空白セルを選択するには、次の例を使用します。
ActiveSheet.Range("a1").End(xlDown).Offset(1,0).Select				
このコードをサンプルの表で使用すると、セル A5 が選択されます。

19 : 列内で連続してデータが存在する範囲全体を選択する方法

列内で連続してデータが存在する範囲全体を選択するには、次の例のいずれかを使用します。
ActiveSheet.Range("a1", ActiveSheet.Range("a1").End(xlDown)).Select				
または				
ActiveSheet.Range("a1:" & ActiveSheet.Range("a1"). _      End(xlDown).Address).Select				
このコードをサンプルの表で使用すると、セル A1 から A4 が選択されます。

20 : 列内でデータが存在する範囲全体を選択する方法

列内でデータが存在する範囲全体を選択するには、次の例のいずれかを使用します。
ActiveSheet.Range("a1",ActiveSheet.Range("a65536").End(xlUp)).Select				
または				
ActiveSheet.Range("a1:" & ActiveSheet.Range("a65536"). _   End(xlUp).Address).Select				
このコードをサンプルの表で使用すると、セル A1 から A6 が選択されます。

21 : セルの四角形の範囲の選択方法

複数のセルを囲む四角形の範囲を選択するには、CurrentRegion メソッドを使用します。CurrentRegion メソッドは空白行と空白列で囲まれたセル範囲を選択します。次の例は、CurrentRegion メソッドの使用方法です。
ActiveSheet.Range("a1").CurrentRegion.Select				
このコードはセル A1 から C4 までを選択します。同じセル範囲を選択する他のコード例を以下に示します。
ActiveSheet.Range("a1", _   ActiveSheet.Range("a1").End(xlDown).End(xlToRight)).Select				
または				
ActiveSheet.Range("a1:" & _   ActiveSheet.Range("a1").End(xlDown).End(xlToRight).Address).Select				
場合によっては、セル A1 から C6 までを選択できますが、この例では 5 行目に空白行があるので、CurrentRegion メソッドでは選択できません。次の例ではすべてのセルを選択します。
lastCol = ActiveSheet.Range("a1").End(xlToRight).ColumnlastRow = ActiveSheet.Cells(65536, lastCol).End(xlUp).RowActiveSheet.Range("a1", ActiveSheet.Cells(lastRow, lastCol)).Select				
または				
lastCol = ActiveSheet.Range("a1").End(xlToRight).ColumnlastRow = ActiveSheet.Cells(65536, lastCol).End(xlUp).RowActiveSheet.Range("a1:" & _   ActiveSheet.Cells(lastRow, lastCol).Address).Select				

22 : 可変長の隣接しない複数の列の選択方法

可変長の隣接しない複数の列を選択するには、次のサンプルの表とマクロの例を使用します。
   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 オブジェクトを常に含める必要があります。次に例を示します。
    Application.Goto Sheets("Sheet1").Range( _      Sheets("Sheet1").Range(Sheets("Sheet1").Cells(2, 3), _      Sheets("Sheet1").Cells(4, 5)))					
  • 引用符で囲まれた項目 (たとえば、名前の範囲 "Test") には文字列型の変数も使用できます。たとえば、次の指定の代わりに、
    ActiveWorkbook.Sheets("Sheet1").Activate						
    次の指定を使用できます。
    ActiveWorkbook.Sheets(myVar).Activate						
    ここで、myVar の値は "Sheet1" です。
関連情報

この資料に記載されているサンプル コードの使用方法の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
290140 サポート技術情報の Office XP プログラム用のサンプル コードを実行する方法
OfficeKBHowTo howto contiguous how to discontiguous non-contiguous nonadjacent non-adjacent XL2000 inf XL2002
プロパティ

文書番号:291308 - 最終更新日: 06/14/2007 02:55:16 - リビジョン: 6.1

Microsoft Office Excel 2007, Microsoft Office Excel 2003, Microsoft Excel 2002 Standard Edition, Microsoft Excel 2000 Standard Edition, Microsoft Excel 97 Standard Edition

  • kbautomation kbmacro kbdtacode kbhowto kbprogramming KB291308
フィードバック