更新日:、 作成日:
VBA シートを選択またはアクティブにする
はじめに
Excel VBA マクロでシートを選択またはアクティブにする方法を紹介します。
Sheets(1).Select または Worksheets(1).Select メソッドから、1 番左のシートを選択できます。
ActiveWindow.SelectedSheets プロパティから、選択しているシートを取得できます。
Activate メソッドから、シートをアクティブにできます。
ActiveSheet オブジェクトから、アクティブシートを取得できます。
シートを選択する
Sheets または Worksheets からシートを取得できます。
Sheets と Worksheets の違いはワークシート以外を取得するかどうかです。
- Sheets:すべてのシートを取得
- Worksheets:ワークシートのみ取得(グラフシートなどは取得しない)
インデックスで選択
Sheets の引数にインデックスを指定すると、そのシートを選択できます。
1 番左のシートを選択するには Sheets(1).Select または Worksheets(1).Select を入力します。1 番左のシートが 1 です。
Sheets(1).Select ' 1 番左のシートを選択
Worksheets(1).Select ' 1 番左のシートを選択
Sheets(2).Select ' 2 番目のシートを選択
Worksheets(2).Select ' 2 番目のシートを選択
シート名で選択
Sheets の引数に名前を指定すると、そのシートを選択できます。
シート名「Sheet1」のシートを選択するには Sheets("Sheet1").Select または Worksheets("Sheet1").Select を入力します。
Sheets("Sheet1").Select ' 「Sheet1」のシートを選択
Worksheets("Sheet1").Select ' 「Sheet1」のシートを選択
複数のシートを選択
1 番目と 2 番目のシートを選択するには Sheets(Array(1, 2)).Select または Sheets(Array("Sheet1", "Sheet2")).Select のように入力します。
Sheets(Array(1, 2)).Select ' 1 番目と 2 番目のシートを選択
Sheets(Array("Sheet1", "Sheet2")).Select ' 「Sheet1」と「Sheet2」のシートを選択
Worksheets(Array(1, 2)).Select ' 1 番目と 2 番目のシートを選択
Worksheets(Array("Sheet1", "Sheet2")).Select ' 「Sheet1」と「Sheet2」のシートを選択
引数に配列でインデックスやシート名を指定します。
すべてのシートを選択
すべてのシートを選択するには Sheets.Select または Worksheets.Select を入力します。
Sheets.Select
Worksheets.Select
スポンサーリンク
シートをアクティブにする
シートをアクティブにするには Sheets(1).Activate または Worksheets("Sheet1").Activate のように入力します。
Sheets(1).Activate ' 1 番左のシートをアクティブ
Worksheets("Sheet1").Activate ' 「Sheet1」のシートをアクティブ
複数選択しているシートの中から選択するとき、Select は選択範囲がそのシートになるのに対して、Activate は選択範囲を維持したまま指定したシートをアクティブにできます。
アクティブシートを取得する
アクティブシートを取得するには ActiveSheet を入力します。
Dim ws As Worksheet
Set ws = ActiveSheet ' アクティブシートを取得
Debug.Print(ws.Name)
アクティブシートとは、開いているシートのことです。
選択シートを取得
アクティブブックの選択しているシートを取得するには ActiveWindow.SelectedSheets を入力します。複数のシートが選択されているときは、そのすべてのシートを取得します。
Dim ws As Worksheet
Set ws = ActiveWindow.SelectedSheets(1) ' 選択している 1 番左のシートを取得
Set ws = ActiveWindow.SelectedSheets("Sheet2") ' 選択しているシート「Sheet2」を取得
Debug.Print(ws.Name)
VBA を実行しているブックの選択しているシートを取得するには ThisWorkbook.Windows(1).SelectedSheets を入力します。
' このコードを実行しているブックの選択シートを取得
Dim ws As Worksheet
For Each ws In ThisWorkbook.Windows(1).SelectedSheets
Debug.Print(ws.Name)
Next
' 開いているブック「Book1.xlsx」の選択シートを取得
For Each ws In Workbooks("Book1.xlsx").Windows(1).SelectedSheets
Debug.Print(ws.Name)
Next
SelectedSheets のインデックスは、選択している中で 1 番左のシートが 1 です。
別ブックのシートを選択やアクティブにする
アクティブブックに対してのみシートを選択できます。別ブックのシートを選択するには、先にそのブックをアクティブにします。シートをアクティブにするのはすべてのブックに対してできます。
ブックを指定しないシートの操作はすべて「アクティブブック」に対して行われます。
- アクティブブック:開いているすべてのブックの中で一番手前に表示されているブックです。
- VBA を実行しているブック:実行している VBA のコードがあるブックです。
アクティブブック
ブックを指定しないシートの操作は、アクティブブックを表す ActiveWorkbook. が省略されています。
' どちらも同じコード
Call Sheets.Add
Call ActiveWorkbook.Sheets.Add
VBA を実行しているブック
VBA を実行しているブックに対して操作するには ThisWorkbook を入力します。
' VBA を実行しているブックに対して操作
Call ThisWorkbook.Sheets.Add
Call ThisWorkbook.Worksheets.Add
ブックを指定
ブックを指定するには Workbooks の引数にブック名またはインデックスを指定します。
ブック「Book2.xlsx」を指定するには Workbooks("Book2.xlsx") を入力します。
Dim wb As Workbook
Set wb = Workbooks("Book2.xlsx")
' Set wb = Workbooks(2) ' 2 番目のブック
wb.Activate ' 先にブック「Book2.xlsx」をアクティブにする
wb.Sheets(1).Select ' そのブックのシートを選択
wb.Worksheets("Sheet1").Activate ' そのブックとシートをアクティブ
Workbooks のインデックスは、ブックを開いた順番に 1 からスタートします。
スポンサーリンク