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

vbaselacteyecatch

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

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

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

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

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

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

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

vbaselecactip008

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

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

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

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

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

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

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

例題1

Selectを使う場合

VBA
Sub Selectテスト1()

 Range("B3").Select

End Sub

実行結果

vbaselecacti001
例題2

Activateを使う場合

VBA
Sub Activateテスト1()

 Range("B3").Activate

End Sub

実行結果

vbaselecacti002
例題の結果

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

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

例題3

Selectを使う場合

VBA
Sub Selectテスト2()

 Range("B3:E9").Select

End Sub

実行結果

vbaselecacti003
例題4

Activateを使う場合

VBA
Sub Activateテスト2()

    Range("B3:E9").Activate

End Sub

実行結果

vbaselecacti004
ほんとに?

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

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

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

MEMO

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

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

Selectを使う場合

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

VBA
Sub Selectテスト3()

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

End Sub

実行結果

vbaselecacti005
例題6

Activateを使う場合

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

VBA
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」を使う場合も多いです。

VBA
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コードとして

VBA
Workbooks("Book2").Activate
Worksheets("Sheet2").Select

と書くか

VBA
Workbooks("Book2").Worksheets("Sheet2").activate

と記述します。

この様に非表示下にあるBOOKを呼び出さなければならないときは、必ず「Activate」を使うことになります。

似た者SelectとActivateの違いのまとめ

vbaselecactip009

この様にお互い似たものであっても、それぞれの個性がしっかりあるということをご理解いただけたと思います。

VBAコード作成を繰り返しているうちに、自然と使い分けが出来るようになってくると思います。

言われてみて「ああ、そうだった」というのもあるかもしれませんが、再確認したということかもしれません。

あと、「Activate」関連してVBAコードを組み立てる上で、

「Activecell」「Activesheet」「Activebook」の使い方でぜひ覚えておいて便利な使い方があります。

この内容については、

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

をご覧ください。

エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。

vbastudyeyecatch2 エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です

今回の記事はここまでです。   最後までご覧いただき有難うございました。

エクセルVBA最速理解で必要な知識を集めよう!

エクセルVBA業務ツールで日常の業務改善を行いましょう。

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

アンケートでポイ活しよう!!

アンケートに答えれば答えるほど ”使える” ポイントがたまります。

NTTコム サーチ

af_banner01

Dstyle web

dstyleweb_logo
dstyle_320x50-min