エクセルVBAで、動きが似た者同士にSelectとActivateがあります。
実際には自然と使い分けをしているメソッドだと思います。
今回はその違いを最速に理解できるように説明をしていきます。
エクセルVBAで、そのコードを実行する先のオブジェクトに、フォーカスするためのメソッドに、「Select」と「Activate」があります。
今回は、このよく似た「Select」と「Activate」について説明します。
こんにちは、じゅんぱ店長(@junpa33)です。
コンテンツ
VBA 似た者SelectとActivateの違いを最速に理解
エクセルVBAのコードを組み立てる中で「Select」と「Activate」は、よく使うコード(メソッド)です。
「どっちを使っても変わらないよ。」なんて話も聞きますし、
また、自分的には「Select」の方をよく使うかなとか思います。
「じゃ どっちでもいいってことで。」ではなくてしっかり違いもありますので、これから説明をいたします。
「Select」と「Activate」は実行結果に違いがある
実際にVBAコードを使って試してみます。
セルB3を選択するコードを作る
セルB3からセルE9までを選択するコードを作る
そこでもう少しコードを付け足したいと思います。
そのVBAプログラムが選択しているセルを見えるように”着色”してみます。
「Select」で複数のセルを選択した場合、操作の対象は選択部分すべてに及びます。
「Activate」で複数のセルを選択した場合、操作の対象は選択範囲の最初のセルのみになります。1つのみです。
「Select」と「Activate」の使い分けにはルールがある
「Select」と「Activate」の使い分け
この様に、「Select」と「Activate」の性格の大きな違いは、
範囲を選択する「Select」と、キミだけを指名する「Activate」ということになります。
「では、これでOKですね!」と言えばそうでもありません。
VBAのルールの中でこっちのメソッドは使えないということがあります。
結論的には、このようになります。
メソッド | Cell、Range | Sheets、Worksheets | Workbooks |
Select | 〇 | 〇 | ✖ |
Activate | 〇 | 〇 | 〇 |
ワークブックで「Select」が使えないのは、
エクセルの仕様として、複数のワークブックを同時にフォーカスを当てて選択することが出来ないことによるものです。
「Select」メソッドの特徴
範囲を選択する時に使う。セルとシートの操作に使うことが出来る。
選択された部分は、「Selection」というオブジェクトで一まとめで扱うことが出来る。
例えば、シートやセルのコピーを行うときは、この「Selection」を使う場合も多いです。
Sub Selectテスト4()
Range("B3:E9").Select
Selection.Interior.ColorIndex = 36
Selection.Copy Destination:=Range("C11")
End Sub
実行結果

「Activate」メソッドの特徴
ただ一つのものを選択する時に使う。
ブックを指定する時はこのメソッドしか使えない。
選択したオブジェクトを操作する時は、「Activecell」「Activesheet」「Activebook」で操作できる。
例えば、VBAコード組み立てで「Activate」が必ず必要な場合があります。
エクセルBOOKを複数立ち上げて作業をしなければならない場合です。
ワークブックの「BOOK1」の「Sheet1」からその時バックグラウンドにあるワークブックの「BOOK2」の「Sheet2」へデータを移したいことがあります。
その時は、VBAコードとして
Workbooks("Book2").Activate
Worksheets("Sheet2").Select
と書くか
Workbooks("Book2").Worksheets("Sheet2").activate
と記述します。
この様に非表示下にあるBOOKを呼び出さなければならないときは、必ず「Activate」を使うことになります。
似た者SelectとActivateの違いのまとめ
この様にお互い似たものであっても、それぞれの個性がしっかりあるということをご理解いただけたと思います。
VBAコード作成を繰り返しているうちに、自然と使い分けが出来るようになってくると思います。
言われてみて「ああ、そうだった」というのもあるかもしれませんが、再確認したということかもしれません。
あと、「Activate」関連してVBAコードを組み立てる上で、
「Activecell」「Activesheet」「Activebook」の使い方でぜひ覚えておいて便利な使い方があります。
この内容については、
をご覧ください。
短期間でエクセルVBAの独学習得を目指したいなら
エクセルVBAを独学する独習方法は、学習者それぞれ十人十色、多種多様と思われます。
けれども、
出来るだけ効率よく学習するためには、いくつかの大切なポイントがあります。
独学でもVBA習得の中級クラスに達するのはそんなに難しいことではありません。
先人が行った勉強方法をあなたがそのまま利用すればよいということです。
独習のための大切な7つのポイントは、上記記事にて解説しています。
独習によるVBA習得のキーワードは、
出来るだけ多くの実例に触れること!
です。
正直、VBAの学習について自分の周りの仕事(業務)からだけ実例を得るのでは効率良い習熟は無理です。
ハッキリ言って、
本当に短い期間でVBA習得を成功させたいなら、今使っている参考書が良書かどうかを判断し、新ツールとしてオンライン学習も取り入れて行うことが、
手っ取り早く短期間習得できるというのは間違いないでしょう。
このサイトでよく使うVBAのコードのトピックを纏めています。