VBA入門
ブック・シートの選択(Select,Activate)

ExcelマクロVBAの基本と応用、エクセルVBAの初級・初心者向け解説
公開日:2013年5月以前 最終更新日:2022-06-10

第27回.ブック・シートの選択(Select,Activate)


エクセルでは複数ブックを扱います。
そして、それぞれのブックには複数のシートが存在します。
従って、マクロVBAでも複数ブック・複数シートを扱う必要があります。


ここまでのVBAでは、あくまでアクティブブックのアクティブシートを対象としてきました。
そこで、アクティブブックやアクティブシートを切り替えるVBAについて解説します。
まず説明しなければならない事は、 「アクティブ」という言葉の意味からになります。


アクティブ

アクティブブック、アクティブシート、アクティブセル
これらは何を指しているかです。
今まさに操作対象となっていると言う事です。

文字を打ちEnterを押したときに、入力されるブックのシートのセル
それが、アクティブブックのアクティブシートのアクティブセルです。

単に選択している状態とは違います

選択は複数できます。
Ctrlを押しながら選択したり、Shiftを押しながら選択すれば、 複数の選択が可能です。
従って、「選択」は複数ありますが、「アクティブ」は常に1つです。

マクロVBA ブック シート

この場合、選択シートは、Sheet1とSheet2ですが、
アクティブシートは、Sheet1になります。

ブックは複数選択は出来ません。
アクティブブックが唯一存在するだけです。

ActiveWorkbook

マクロVBAにおいて、アクティブブックを指定する場合の書き方です。

ActiveSheet

マクロVBAにおいて、アクティブシートを指定する場合の書き方です。


ブックをアクティブにする

マクロVBAで指定ブックをアクティブにするには、
Workbooks("ブック名").Activate
このように記述します。
ブック名には、拡張子(.xls、.xlsx、.xlsm)も指定する必要があります

マクロの記録の場合は、
Windows("ブック名").Activate
このように記録されます。

上記、2つは、1つのブックに対し複数のウインドウを開いている時に違いが発生します。
本来は、Windows("ウインドウ名")なのですが、
ブックに対し1つしかウインドウが存在しない場合は、
ウインドウ名 = ブック名
となっていいます。


シートの選択、シートのアクティブ

シートの選択

マクロVBAで指定シートを選択にするには、

Sheets("シート名").Select
Sheets(インデックス).Select
Worksheets("シート名").Select
Worksheets(インデックス).Select

インデックスはシートの順番の数値です、詳細は後々。
非表示シートが無ければ、一番左のシートから順に、1,2,3・・・となります。

Sheetsはすべてのシート(ワークシート、グラフシート等)が対象です。
Worksheetsはワークシートだけが対象となります。
ワークシートしかなければ、SheetsもWorkSheetsも同じです。

シートをアクティブにする

マクロVBAで指定シートをアクティブにするには、

Sheets("シート名").Activate
Sheets(インデックス).Activate
Worksheets("シート名").Activate
Worksheets(インデックス).Activate

Activateでも、シートが選択されます。

SelectとActivateの違い

Sheets("シート名").SelectとSheets("シート名").Activateの違いは、
1つしかシートを選択にしない場合は全く同じ事です。
どちらで書いても良いでしょう。

複数シートを選択(作業グループ化)している場合に違いが出てきます。

一つのシートだけ選択している場合
選択シート = アクティブシート
SelectでもActivateでも同じ動作となります。

複数シートを選択している場合
Selectでは、
指定シートのみ選択状態になり、指定シートがアクティブになります。

Activateでは、
選択されているシートはそのままで、指定シートがアクティブになります。
※ただし全シートが選択状態の場合は、Activateで他のシートの選択は解除されます。


複数シートの選択(作業グループ化)

Sheets(Array("シート名1", "シート名2", ・・・)).Select
これで、複数シートが選択されます。

Arrayは配列です、これについては後々に。
そして、この状態で、
Sheets("シート名2").Activate

この場合は、シートの複数選択がそのままで アクティブシートのみ移動します。
しかし、この状態で、
Sheets("シート名2").Select
とした場合は、作業グループが解除され"シート名2"が選択されアクティブになります。

ただし、マクロVBAにおいてシートを作業グループ化しての操作を行う事はほとんどありません。
複数シートのコピーや印刷時に稀に行うくらいです。
シートの複数選択(Select)
・マクロの記録と同じようにArrayに固定文字で ・シート名の配列を作成する ・シートのSelectメソッドの引数にFalseを指定する ・全シートを選択するだけなら

マクロVBAで複数のシートに同じ処理をする場合は、
作業グループではなく、繰り返し処理で複数のシートに同じ処理を行う方が良いです。
全てのシートに同じ事をする(For~Worksheets.Count)
・シートの指定方法 ・全シートの「印刷の向き」を「横」に設定します。 ・シート名に"横"と入っているシートだけ「印刷の向き」を「横」に設定します ・シート名に"削除"と入っていたらシートを削除する ・For Eachについて ・ExcelマクロVBA入門の対応ページ


複数ブックを開いている時のシート選択

Sheets("シート名").Select
これで選択できるのは、アクティブブックのシートだけです。
アクティブブック以外のシートを選択する場合は、
そのブックをアクティブにしてから、シートのSelectメソッドを実行します。

Book2.xlsxが非アクティブの時、Book2.xlsxのSheet2を選択する場合は、

Workbooks("Book2.xlsx").Activate
Sheets("Sheet2").Select


このように、ブック→シートの順にアクティブにします。

ただし、Activateメソッドを使って1行で書くこともできます。
Workbooks("Book2.xlsx").Sheets("Sheet2").Activate
これでも、Book2のSheet2を選択状態にできます。
特に1行で書く理由もないので、あまり使われていないかもしれません。


VBAでの色々なシート指定方法

ワークシートの指定方法には、以下の3通りがあります。

✅シートのインデックス番号で指定
✅シートの名称で指定
✅シートのオブジェクト名で指定

それぞれの詳しい使い方については以下を参照してください。
エクセルVBAでのシート指定方法
・シートのインデックス番号で指定 ・シートの名称で指定 ・シートのオブジェクト名で指定 ・ブックの保護 ・VBAでのシート指定方法




同じテーマ「マクロVBA入門」の記事

第24回.インプットボックス(InputBox関数)

・InputBox関数の構文 ・名前付き引数 ・InputBox関数の例文
第25回.名前付き引数について
・仮引数と実引数 ・メソッドとは ・名前付き引数について ・名前付き引数の例文 ・名前付き引数の必要性
第26回.総合練習問題2
・マクロVBA練習問題 ・シンキングタイム ・マクロVBA練習問題解答へ
第27回.ブック・シートの選択(Select,Activate)
第28回.セル・行・列の選択(Select,ActivateとCurrentRegion)
・選択セルとアクティブセル ・セルの選択 ・セルをアクティブにする ・行の選択、列の選択 ・セル領域の選択 ・メソッドとはプロパティとは
第29回.セル・行・列の削除・挿入(Delete,Insert)
・セルの削除 ・セルの挿入 ・セルの削除・挿入時は、Shift:=は必ず指定 ・行・列の削除・挿入 ・行・列の削除/行・列の挿入で、Shift:=は必要か ・行・列の表示・非表示
第30回.総合練習問題3
・マクロVBA練習問題 ・シンキングタイム ・マクロVBA練習問題解答へ
第31回.セルの書式(表示形式,NumberFormatLocal)
・マクロでの表示書式の指定 ・表示書式指定文字 ・表示書式指定文字の調べ方 ・Range.NumberFormatについて ・実際に表示されている形式の文字列を取得
第32回.セルの書式(配置,Alignment)
セル内での値を表示する位置(縦位置、横位置)をマクロVBAで指定できます。「セルの書式設定」→「配置」で指定する内容です。マクロVBAでの配置の指定 Range.プロパティ=設定値 指定できるプロパティの設定値は以下になります。
第33回.セルの書式(フォント,Font)
・マクロでの指定 ・色定数 ・RGB関数 ・色の指定を解除(自動) ・フォント(Font)設定についての注意点
第34回.セルの書式(塗りつぶし,Interior)
・マクロVBAでのInterior指定 ・色定数 ・RGB関数 ・塗りつぶしなし ・条件付き書式との使い分け


新着記事NEW ・・・新着記事一覧を見る

ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
累計を求める数式あれこれ|エクセル関数応用(2024-01-22)
複数の文字列を検索して置換するSUBSTITUTE|エクセル入門(2024-01-03)
いくつかの数式の計算中にリソース不足になりました。|エクセル雑感(2023-12-28)
VBAでクリップボードへ文字列を送信・取得する3つの方法|VBA技術解説(2023-12-07)
難しい数式とは何か?|エクセル雑感(2023-12-07)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.変数宣言のDimとデータ型|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.並べ替え(Sort)|VBA入門
8.条件分岐(IF)|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.マクロとは?VBAとは?VBAでできること|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ