みなさん、こんにちは。
ITソリューション事業部の林です。
本記事では、ExcelVBAのテクニックを紹介・解説いたします。
今回紹介するのは、「ワークシートの選択方法」です。
【目次】
それでは、始めましょう!
ワークシートの選択方法について
ワークシートを明示的に選択する方法は、大きく分けて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
メリット:シート名や並び順が変わっても動作する
デメリット:オブジェクト指定が省略されているため可読性が下がる
設定されているワークシートのオブジェクト名を使用します。
シートのオブジェクト名は、エディターのプロパティウインドウで確認できます。
また、任意のオブジェクト名に変更も可能です。
オブジェクト名はシート名・インデックス番号とは別物なので、上述した方法①②の欠点を解消しています。
ただし、この方法は方法①②よりも上級者向け、悪く言えばマイナー寄りなので、マクロ作成者以外にはすぐ理解できない可能性があります。
今回の記事は以上になります。
それでは、また次回お会いしましょう!