ExcelマクロVBA入門
第27回.ブック・シートの選択(Select,Activate)

Excelマクロの基礎と応用、エクセルVBAの入門・初級・初心者向け解説
最終更新日:2018-02-15

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


エクセルでは、複数ブックを扱います、
そして、それぞれのブックには、複数のシートが存在します。



まず説明しなければならない事は、

アクティブ

この言葉の意味です。

アクティブブック、アクティブシート、アクティブセル

これらは何を指しているかです。

今まさに操作対象となっていると言う事です。

文字を打ち、Enterを押したときに、入力される、ブックのシートのセル

それが、アクティブブックのアクティブシートのアクティブセルです。

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

選択は複数できます、Ctrlを押しながら選択したり、Shiftを押しながら選択すれば、

複数の選択が可能です。

従って、「選択」は複数ありますが、「アクティブ」は常に1つです。

Excel解説

この場合、選択シートは、Sheet1とSheet2ですが、

アクティブシートは、Sheet2になります。

ただし、ブックは複数選択は出来ません。

アクティブブックが存在するだけです。


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



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



ブックをアクティブにする
Workbooks("ブック名").Activate


ブック名には、拡張子(.xls、.xlsx、.xlsm)も指定する必要があります

マクロの記録ですと、

Windows("ブック名").Activate

と記録されます。

上記、2つは、1つのブックに対し複数のウインドウを開いている時に違いが発生します。

本来は、Windows("ウインドウ名")なのですが、

ブックに対し1つしかウインドウが存在しない場合は、

ウインドウ名 = ブック名

となっているだけです。



シートの選択
Sheets("シート名").Select

または、

Sheets(インデックス).Select

インデックスは、シートの順番の数値です、詳細は後々。

非表示シートが無ければ、一番左のシートから順に、1,2,3・・・となります。

ワークシートしかなければ、SheetsをWorkSheetsでも同じです。


シートをアクティブにする
Sheets("シート名").Activate

または、

Sheets(インデックス).Activate

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

では、

Sheets("シート名").SelectとSheets("シート名").Activateの違いは、

1つしかシートを選択にしない場合は、全く同じ事です、どちらでも良いでしょう。

複数シートを選択(作業グループ化)している場合のみ違いがあるだけです。




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

Sheets(Array("シート名1", "シート名2", ・・・)).Select

これで、複数シートが選択されます。

Arrayは配列です、これについては後々

そして、この状態で、

Sheets("シート名2").Activate

この場合においては、シートの複数選択がそのままで、 アクティブシートのみ移動されます。

しかし、この状態で、

Sheets("シート名2").Select

とした場合は、作業グループが解除され、 シート名2が選択され、アクティブになります。

ただし、マクロにおいて、シートを作業グループ化しての操作は行いません。

行いませんと言うより、行わない方が良いです。

マクロで複数のシートに同じ処理をする場合は、
作業グループではなく、繰り返し処理で、複数のシートに同じ処理を行う方が良いということです。
全てのシートに同じ事をする(For~Worksheets.Count)



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

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入門」の記事

インプットボックス(InputBox関数)
名前付き引数について
総合練習問題2
ブック・シートの選択(Select,Activate)
セル・行・列の選択(Select,Activate)
セル・行・列の削除・挿入(Delete,Insert)
総合練習問題3
セルの書式(表示形式,NumberFormatLocal)
セルの書式(配置,Alignment)
セルの書式(フォント,Font)
セルの書式(塗りつぶし,Interior)


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

IfステートメントとIIF関数とMax関数の速度比較|VBA技術解説(6月23日)
Withステートメントの実行速度と注意点|VBA技術解説(6月6日)
VBA+SeleniumBasicで検索順位チェッカー(改)|VBA技術解説(6月2日)
マクロでShift_JIS文字コードか判定する|VBA技術解説(6月1日)
Shift_JISのテキストファイルをUTF-8に一括変換|VBAサンプル集(5月31日)
「VBAによる解析シリーズその2 カッコ」をやってみた|エクセル(5月21日)
VBA+SeleniumBasicで検索順位チェッカー作成|VBA技術解説(5月18日)
テーブル操作のVBAコード(ListObject)|VBA入門(5月12日)
テーブル操作の概要(ListObject)|VBA入門(5月12日)
VBAのスクレイピングを簡単楽にしてくれるSelenium|VBA技術解説(5月6日)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.RangeとCellsの使い方|ExcelマクロVBA入門
4.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
5.変数とデータ型(Dim)|ExcelマクロVBA入門
6.ひらがな⇔カタカナの変換|エクセル基本操作
7.繰り返し処理(For Next)|ExcelマクロVBA入門
8.マクロって何?VBAって何?|ExcelマクロVBA入門
9.空白セルを正しく判定する方法(IsEmpty,IsError,HasFormula)|VBA技術解説
10.ExcelマクロVBAの基礎を学習する方法|エクセルの神髄


  • >
  • >
  • >
  • ブック・シートの選択(Select,Activate)

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


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






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