
アクティブシート(選択されているシート)を変更したいんだけど、
マクロで別のシートを選択する方法は無いの?

なるほど…。
では今回は、「VBA(マクロ)でエクセルシートを選択する方法」を
VBAマクロ歴3年の私が、できるだけわかりやすく解説いたします。
エクセルで別のシートを選択する方法(VBAマクロ)
「Select」を使います。
まずは実行見本をどうぞ。
実行見本
ひとまず全コードと実行結果をご覧ください。
解説は後ほど行います。
全コード
Sub シートを選択()
Worksheets("Sheet2").Select
End Sub
実行結果

解説
※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。
プロシージャの作成
Sub シートを選択()
End Sub
プロシージャなど、マクロの基礎は下記記事でわかりやすく解説しております。
コードだけではなく、開発タブの表示からマクロの保存まで知りたい方はご参考ください。
シートを選択
Worksheets("Sheet2").Select
上記VBAコードにて、シートの選択を行っております。
【 Worksheets(“選択するシート名“).Select 】
今回は「Sheet2」を選択しました。
「選択するシート名」は「”(ダブルクォーテーション)」で囲ってください。
また、「Worksheets」「Select」は先頭を大文字にする必要がありますので注意しましょう。
マクロが完成したら、実行して動作を確認してみましょう。

エクセル内に作成した自作のボタンを押してマクロを実行させることも可能です。
ボタンの作り方は、下記記事でわかりやすく解説しております。
ここまで、一番シンプルな方法を紹介いたしました。
シートを選択する方法は他にもいろいろあります。
次項でいくつか紹介いたします。
いろいろなシート選択方法
複数のシートを選択
Sub 複数のシートを選択()
Worksheets(Array("Sheet1", "Sheet2")).Select
End Sub
上記VBAコードを実行することで、複数のシートを選択することができます。
【 Worksheets(Array(“選択するシートA“, “選択するシートB“)).Select 】
Array()の()内に選択するシートを「,(カンマ)」で区切って書いてください。
シート名を「”」で囲うのを忘れないようにしましょう。

上図のように、選択した複数のシートがグループ化された状態になります。
変数と同じシート名を選択
シート名を直接指定せず、変数に格納された値と同じ名前のシートを選択することもできます。
Sub 変数と同じ名前のシートを選択()
Dim sheetName As String
sheetName = "Sheet2"
Worksheets(sheetName).Select
End Sub
上記VBAコードの3行目で、変数「sheetName」に「Sheet2」が格納されました。
4行目のシート選択で、その変数「sheetName」を指定することで、間接的に「Sheet2」を指定したことになります。
「sheetName」は変数ですので、「”」で囲わなくでOKです。

変数や宣言(Dim sheetName As String)については、下記記事でわかりやすく解説しております。
使用者が指定するシートを選択
マクロを実行すると入力フォームが現れ、打ち込んだ文字と同じシートを選択する例です。
下記VBAコードを見てください。
Sub 使用者がシートを選択()
Dim sheetName As String
sheetName = InputBox("シート名を入力してください")
Worksheets(sheetName).Select
End Sub
「InputBox」で入力フォームが開きます。
入力された文字が変数「sheetName」に入り、あとは前項と同じです。

シート番号で選択
これまでは、選択するシートを「シート名(Sheet2など)」で指定してきましたが、
シート番号を指定することでも選択ができます。
シートには番号があり、一番左のシートが「1」、左から二番目が「2」といった具合です。
下記のVBAコードを見てください。
Sub 番号でシートを選択()
Worksheets(1).Select ' 一番左のシートを選択
End Sub
これで一番左にある「Sheet1」を選択することができます。

左から二番目のシートを選択するには、「2」を指定します。
Worksheets(2).Select ' 左から二番目のシートを選択

一番右のシートを選択したい場合は、「Sheets.Count」を指定してください。
Worksheets(Sheets.Count).Select ' 一番右のシートを選択

ワークシート以外の選択
「Worksheets」ではなく、「Sheets」を使えば、ワークシート以外のシートも選択することも可能です。
Sub シートを選択()
Sheets("Sheet2").Select
End Sub
これでグラフシートやマクロシートなども選択できます。
次に、シートを選択する時の注意点を見ていきましょう。
シートを選択する時の注意点
当然ですが、存在しないシートは選択することができません。
下記VBAコードは、存在しない「Sheet9999」を選択しようとした例です。
Sub シートを選択()
Sheets("Sheet9999").Select
End Sub
下記のようなエラーが発生してマクロが実行できませんので、注意しましょう。

また、「select」を多用することで、処理が遅くなることがあります。
シートを選択する必要がないときは、「select」を使わないようにしましょう。
下記VBAコードは、「select」を使わずにセルを操作した例です。
Sub シート選択を使わずに操作()
Range("A1").Value = 1
End Sub
うまく動作しないときの対処法
エラーが発生する
コンパイルエラー・実行時エラー
コードに問題がある場合が多いです。
「”」や()など、2つセットの記号が片方だけになっていないかなど、コードを再確認しましょう。
セル名を「”」で囲っていない場合でもエラーが発生します。
また今回の場合は、存在しないシートを選択しようとした場合にも実行時エラーが発生しますので、指定のシート名と実際のシート名を確認しましょう。
警告表示

上記の表示が出た場合は、マクロが無効になっています。
エクセルに表示された「コンテンツの有効化」をクリックするか、下記記事を参考にセキュリティ設定を変更してください。
最後に
VBAでエクセルシートを選択する方法を解説いたしました。
当ブログでは、VBAマクロやPythonなど、時間を生み出すプログラミング術を公開しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。
最後までお読みいただき、ありがとうございました。がんばってください!