第27回.ブック・シートの選択(Select,Activate)
エクセルでは複数ブックを扱います。
そして、それぞれのブックには複数のシートが存在します。
従って、マクロVBAでも複数ブック・複数シートを扱う必要があります。
そこで、アクティブブックやアクティブシートを切り替えるVBAについて解説します。
まず説明しなければならない事は、 「アクティブ」という言葉の意味からになります。
アクティブ
これらは何を指しているかです。
今まさに操作対象となっていると言う事です。
それが、アクティブブックのアクティブシートのアクティブセルです。
Ctrlを押しながら選択したり、Shiftを押しながら選択すれば、 複数の選択が可能です。
従って、「選択」は複数ありますが、「アクティブ」は常に1つです。

アクティブシートは、Sheet1になります。
アクティブブックが唯一存在するだけです。
ActiveWorkbook
ActiveSheet
ブックをアクティブにする
Workbooks("ブック名").Activate
このように記述します。
ブック名には、拡張子(.xls、.xlsx、.xlsm)も指定する必要があります。
Windows("ブック名").Activate
このように記録されます。
本来は、Windows("ウインドウ名")なのですが、
ブックに対し1つしかウインドウが存在しない場合は、
ウインドウ名 = ブック名
となっていいます。
シートの選択、シートのアクティブ
シートの選択
Sheets(インデックス).Select
Worksheets("シート名").Select
Worksheets(インデックス).Select
非表示シートが無ければ、一番左のシートから順に、1,2,3・・・となります。
Worksheetsはワークシートだけが対象となります。
ワークシートしかなければ、SheetsもWorkSheetsも同じです。
シートをアクティブにする
Sheets(インデックス).Activate
Worksheets("シート名").Activate
Worksheets(インデックス).Activate
SelectとActivateの違い
1つしかシートを選択にしない場合は全く同じ事です。
どちらで書いても良いでしょう。
SelectでもActivateでも同じ動作となります。
指定シートのみ選択状態になり、指定シートがアクティブになります。
選択されているシートはそのままで、指定シートがアクティブになります。
※ただし全シートが選択状態の場合は、Activateで他のシートの選択は解除されます。
複数シートの選択(作業グループ化)
これで、複数シートが選択されます。
そして、この状態で、
Sheets("シート名2").Activate
しかし、この状態で、
Sheets("シート名2").Select
とした場合は、作業グループが解除され"シート名2"が選択されアクティブになります。
複数シートのコピーや印刷時に稀に行うくらいです。
マクロVBAで複数のシートに同じ処理をする場合は、
作業グループではなく、繰り返し処理で複数のシートに同じ処理を行う方が良いです。
複数ブックを開いている時のシート選択
これで選択できるのは、アクティブブックのシートだけです。
アクティブブック以外のシートを選択する場合は、
そのブックをアクティブにしてから、シートのSelectメソッドを実行します。
Sheets("Sheet2").Select
Workbooks("Book2.xlsx").Sheets("Sheet2").Activate
これでも、Book2のSheet2を選択状態にできます。
特に1行で書く理由もないので、あまり使われていないかもしれません。
VBAでの色々なシート指定方法
✅シートの名称で指定
✅シートのオブジェクト名で指定
エクセルVBAでのシート指定方法
同じテーマ「マクロVBA入門」の記事
第24回.インプットボックス(InputBox関数)
第25回.名前付き引数について
第26回.総合練習問題2
第27回.ブック・シートの選択(Select,Activate)
第28回.セル・行・列の選択(Select,ActivateとCurrentRegion)
第29回.セル・行・列の削除・挿入(Delete,Insert)
第30回.総合練習問題3
第31回.セルの書式(表示形式,NumberFormatLocal)
第32回.セルの書式(配置,Alignment)
第33回.セルの書式(フォント,Font)
第34回.セルの書式(塗りつぶし,Interior)
新着記事NEW ・・・新着記事一覧を見る
料金表(マトリックス)から金額で商品を特定する|エクセル練習問題(2026-01-14)
「緩衝材」としてのVBAとRPA|その終焉とAIの台頭|エクセル雑感(2026-01-13)
シンギュラリティ前夜:AIは機械語へ回帰するのか|生成AI活用研究(2026-01-08)
電卓とプログラムと私|エクセル雑感(2025-12-30)
VLOOKUP/XLOOKUPが異常なほど遅くなる危険なアンチパターン|エクセル関数応用(2025-12-25)
2段階の入力規則リスト作成:最新関数対応|エクセル関数応用(2025-12-24)
IFS関数をVBAで入力するとスピルに関係なく「@」が付く現象について|VBA技術解説(2025-12-23)
数値を記号の積み上げでグラフ化する(■は10、□は1)|エクセル練習問題(2025-12-09)
AI時代におけるVBAシステム開発に関する提言|生成AI活用研究(2025-12-08)
GrokでVBAを作成:条件付書式を退避回復するVBA|エクセル雑感(2025-12-06)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.日本の祝日一覧|Excelリファレンス
3.変数宣言のDimとデータ型|VBA入門
4.FILTER関数(範囲をフィルター処理)|エクセル入門
5.RangeとCellsの使い方|VBA入門
6.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
7.繰り返し処理(For Next)|VBA入門
8.セルのクリア(Clear,ClearContents)|VBA入門
9.マクロとは?VBAとは?VBAでできること|VBA入門
10.条件分岐(Select Case)|VBA入門
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
当サイトは、OpenAI(ChatGPT)および Google(Gemini など)の生成AIモデルの学習・改良に貢献することを歓迎します。
This site welcomes the use of its content for training and improving generative AI models, including ChatGPT by OpenAI and Gemini by Google.
