【VBAマクロ】シートを選択する方法を徹底解説【エクセル初心者向け】

スポンサードリンク
VBA
過去の自分
過去の自分

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

今の自分
今の自分

なるほど…。
では今回は、「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など、時間を生み出すプログラミング術を公開しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。

最後までお読みいただき、ありがとうございました。がんばってください!

タイトルとURLをコピーしました