VBA 似た者SelectとActivateの違いを理解

vbaselacteyecatch

エクセルVBAで、動きが似た者同士にSelectとActivateがあります。

実際には自然と使い分けをしているメソッドだと思います。

今回はその違いを最速に理解できるように説明をしていきます。

エクセルVBAで、そのコードを実行する先のオブジェクトに、フォーカスするためのメソッドに、「Select」と「Activate」があります。

今回は、このよく似た「Select」と「Activate」について説明します。

こんにちは、じゅんぱ店長(@junpa33)です。

VBA 似た者SelectとActivateの違いを最速に理解

エクセルVBAのコードを組み立てる中で「Select」と「Activate」は、よく使うコード(メソッド)です。

「どっちを使っても変わらないよ。」なんて話も聞きますし、

また、自分的には「Select」の方をよく使うかなとか思います。

「じゃ どっちでもいいってことで。」ではなくてしっかり違いもありますので、これから説明をいたします。

「Select」と「Activate」は実行結果に違いがある

実際にVBAコードを使って試してみます。

セルB3を選択するコードを作る

例題1

Selectメソッドを使う場合

Selectコード
Sub Selectテスト1()

 Range("B3").Select

End Sub

実行結果

vbaselecacti001

例題2

Activateを使う場合

コード
Sub Activateテスト1()

 Range("B3").Activate

End Sub

実行結果

vbaselecacti002

例題の結果
ただ一つのものを選択する場合は「Select」も「Activate」も同じ結果になります。

セルB3からセルE9までを選択するコードを作る

例題3

Selectメソッドを使う場合

コード
Sub Selectテスト2()

 Range("B3:E9").Select

End Sub

実行結果

vbaselecacti003

例題4

Activateを使う場合

コード
Sub Activateテスト2()

    Range("B3:E9").Activate

End Sub

実行結果

vbaselecacti004

ほんとに?
複数のセルを選択した場合も同じ結果になった!?ような気がします。

そこでもう少しコードを付け足したいと思います。

そのVBAプログラムが選択しているセルを見えるように”着色”してみます。

MEMO

セルの背景色についてはこちらを参考にしてください。

vbacellspaintbackeyecatch 「塗りつぶし」背景色をVBAで記述する

例題5

Selectメソッドを使う場合

Selectメソッドで選択した部分は「Selection」のオブジェクトとして操作できます。

コード
Sub Selectテスト3()

    Range("B3:E9").Select
    Selection.Interior.ColorIndex = 36

End Sub

実行結果

vbaselecacti005

例題6

Activateを使う場合

Activateメソッドで選択したセルは「Activecell」のオブジェクトとして操作できます。

コード
Sub Activateテスト3()

    Range("B3:E9").Activate
    ActiveCell.Interior.ColorIndex = 36

End Sub

実行結果

vbaselecacti006

例題の結果

「Select」で複数のセルを選択した場合、操作の対象は選択部分すべてに及びます。

「Activate」で複数のセルを選択した場合、操作の対象は選択範囲の最初のセルのみになります。1つのみです。

「Select」と「Activate」の使い分けにはルールがある

「Select」と「Activate」の使い分け

この様に、「Select」と「Activate」の性格の大きな違いは、

範囲を選択する「Select」と、キミだけを指名する「Activate」ということになります。

「では、これでOKですね!」と言えばそうでもありません。

VBAのルールの中でこっちのメソッドは使えないということがあります。

結論的には、このようになります。

メソッドCell、RangeSheets、WorksheetsWorkbooks
Select
Activate

ワークブックで「Select」が使えないのは、

エクセルの仕様として、複数のワークブックを同時にフォーカスを当てて選択することが出来ないことによるものです。

「Select」メソッドの特徴

範囲を選択する時に使う。セルとシートの操作に使うことが出来る。

選択された部分は、「Selection」というオブジェクトで一まとめで扱うことが出来る。

例えば、シートやセルのコピーを行うときは、この「Selection」を使う場合も多いです。

コード
Sub Selectテスト4()

    Range("B3:E9").Select
    Selection.Interior.ColorIndex = 36
    Selection.Copy Destination:=Range("C11")

End Sub

実行結果

vbaselecacti007

「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」の使い方でぜひ覚えておいて便利な使い方があります。

この内容については、

vbanameeyecatch 新規作成ブックとシート。アクティブ状態でやっておくこと

をご覧ください。

短期間でエクセルVBAの独学習得を目指したいなら

エクセルVBAを独学する独習方法は、学習者それぞれ十人十色、多種多様と思われます。

けれども、

出来るだけ効率よく学習するためには、いくつかの大切なポイントがあります。

独学でもVBA習得の中級クラスに達するのはそんなに難しいことではありません。

先人が行った勉強方法をあなたがそのまま利用すればよいということです。

独習のための大切な7つのポイントは、上記記事にて解説しています。

重要ワード

独習によるVBA習得のキーワードは、

出来るだけ多くの実例に触れること!

です。

正直、VBAの学習について自分の周りの仕事(業務)からだけ実例を得るのでは効率良い習熟は無理です。

ハッキリ言って、

本当に短い期間でVBA習得を成功させたいなら、今使っている参考書が良書かどうかを判断し、新ツールとしてオンライン学習も取り入れて行うことが、

手っ取り早く短期間習得できるというのは間違いないでしょう。

このサイトでよく使うVBAのコードのトピックを纏めています。

「エクセルVBA最速理解」の記事一覧を開く

<記事内容についての告知>VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません