以下の内容はhttps://www.limecode.jp/entry/difference/range-select-activateより取得しました。


Range.Selectと.Activateの違い

Rangeオブジェクトのメソッドである、
SelectメソッドActivateメソッドの違いを解説します。

同じところ

どちらも選択セルを変更するメソッドです。

Sheet1のA1セルが選択されている状態では、
以下のコードはどちらも「B3:D5」セルを選択状態にします。

Worksheets("Sheet1").Range("B3:D5").Select
Worksheets("Sheet1").Range("B3:D5").Activate

 
別のシートがアクティブの際に実行するとエラーになる仕様も同じで、
上記のコードはどちらも

Rangeクラスの○○メソッドが失敗しました。

エラーとなります。

違うところ

Activateメソッドは「選択範囲内のアクティブセルを変更する」機能を持ちます。

例えばA1:C3セルを選択した状態で以下のコードを実行すると、
A1:C3セルを選択したままアクティブセルをB2に変更します。

Range("B2").Activate

Activateメソッドの実行結果
 
この判定は「対象Rangeの第1セル」によるもののようで、
以下のコードでも同じくB2セルをアクティブセルにする動きになります。

' A1:C3選択下では以下のコードは同じ動き
Range("B2").Activate
Range("B2:F10").Activate

 

対してSelectメソッドは純粋な「選択範囲の変更」機能のため、
選択セルをA1:C3からB2に変更します。

Range("B2").Select

Selectメソッドの実行結果


使い分け

通常のセル選択にはSelectメソッドを使用し、
アクティブセルの変更時にだけActivateメソッドを使用しましょう。

通常のセル選択にActivateメソッドを使用していると、
現在の選択範囲によって挙動が変わってしまい安定しません。


Activateメソッドは「セル範囲.Activate」というコードは基本使用せず、
「現在のセル範囲内の単独セル.Activate」というコード限定で使用してください。




以上の内容はhttps://www.limecode.jp/entry/difference/range-select-activateより取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14