ラピードアクト株式会社

技術記事:ExcelVBAで仕事を効率化しようVol.28

みなさん、こんにちは。
ITソリューション事業部の林です。

本記事では、ExcelVBAのテクニックを紹介・解説いたします。

今回紹介するのは、「ワークシートの選択方法」です。

【目次】

  1. ワークシートの選択方法について
  2. 方法①「シート名称で選択」
  3. 方法②「インデックス番号で選択」
  4. 方法③「オブジェクト名で選択」

それでは、始めましょう!

ワークシートの選択方法について

ワークシートを明示的に選択する方法は、大きく分けて3種類あります
・シート名称で選択
・インデックス番号で選択
・オブジェクト名で選択

やり方は違いますが、「操作するシートを明確にする」という目的は同じです。
どの方法にもメリット・デメリットがありますので、個人の好みや状況によって使い分けるのがよいと思います。

方法①「シート名称で選択」

Sub ExcelVBA_028_Example1()
    Worksheets("Sheet1").Select
End Sub

メリット:対象が明確なため安定してマクロが動く
デメリット:シート名を変更したらソースコードも変更しなければならない

ワークシートの名前で対象を指定するので、ソースコードが読みやすくなります。

また、ワークシートの並び順が変更されても動作に影響が及びません。
その反面、シートの名前を変えた時は、ソースコードも書き換える必要があります。
しかし、対象が厳密に定められているため可読性に優れており、さらに安定して動作するので、確実に動作するマクロを作るなら、この方法が適しています。

方法②「インデックス番号で選択」

Sub ExcelVBA_028_Example2()
    Worksheets(1).Select
End Sub

メリット:ソースコードが短くなるシート名が変わっても動作する
デメリット:シートの並び順が変わると意図しない不具合が起こる

もっとも簡単なシートの選択方法です。
シートにはインデックス番号が割り振られており、左から右へ向かって連番になっています。
インデックス番号はマクロを実行するたびにリセットされるので、シートを並び替えても、左端のシートは必ず"1"になります。

この方法が最も活きるのはすべてのシートが共通するフォーマットで作られている場合です。
インデックス番号を1,2,3…と増やしていけば、すべてのシートに対し共通の処理を適用できます。
逆に言うと、各シートのフォーマットが共通していなければ、この方法を選ぶ理由は薄いと言えます。

方法③「オブジェクト名で選択」

Sub ExcelVBA_028_Example3()
    Sheet1.Select
End Sub

メリット:シート名や並び順が変わっても動作する
デメリット:オブジェクト指定が省略されているため可読性が下がる

設定されているワークシートのオブジェクト名を使用します。
シートのオブジェクト名は、エディターのプロパティウインドウで確認できます。
また、任意のオブジェクト名に変更も可能です。

オブジェクト名はシート名・インデックス番号とは別物なので、上述した方法①②の欠点を解消しています。
ただし、この方法は方法①②よりも上級者向け、悪く言えばマイナー寄りなので、マクロ作成者以外にはすぐ理解できない可能性があります。

今回の記事は以上になります。
それでは、また次回お会いしましょう!