【VBA】SelectとActivateの違いとは?使い分けをマスターする3分講座

【業務効率化】VBA
スポンサーリンク

SelectとActivateの違い

結論からお伝えすると、この2つの違いは「範囲を選択状態にする」か「入力の準備をする」かにあります。

  • Select(セレクト) セルやセル範囲を「選択」する操作です。マウスでドラッグして、範囲がグレーに反転している状態を指します。
  • Activate(アクティベート) 選択された範囲の中で、特定の1セルを「入力待機状態」にすることです。範囲内で1箇所だけ白くなっているセルが「アクティブセル」です。

例えば、Range(“A1:C3”).Select を実行するとA1からC3までが選択されます。

続けて Range(“B2”).Activate を実行すると、選択範囲(A1:C3)は維持されたまま、B2セルが入力待機状態に切り替わります。

【業務効率化】VBAの記事を見る

実務における「正解」の書き方

結論から言うと、実際の開発現場では SelectもActivateも極力使いません。

その理由は、コードを実行するたびに画面上でセルを選択する動きが入ると、処理速度が大幅に低下するからです。また、画面がチカチカと揺れるため、ユーザーの目も疲れさせてしまいます。

マクロの記録」機能を使うと、必ずと言っていいほどSelectやActivateが含まれたコードが生成されます。

しかし、単にセルの値を書き換えるだけであれば、対象を直接指定して操作するのが最もスマートで高速な手法です。

コピペで確認!実践比較コード

1. 基本の書き方(挙動の違いを確認)

Sub CheckSelectActivate()
    ' A1からC3を選択する(範囲選択の状態)
    Range("A1:C3").Select
    ' 選択範囲の中でB2を入力可能状態にする(アクティブ化)
    Range("B2").Activate
    ' アクティブになったセル(B2)に文字を入力する
    ActiveCell.Value = "ここに注目"
End Sub

2. 直接書き込む(選択しない=高速・安全)

Sub WriteDirectly()
    ' SelectもActivateも使わずに、直接値を書き込む
    ' この方法なら画面がチラつかず、処理も一瞬で完了します
    Range("B2").Value = "ここに注目"
End Sub

最後に

学習を始めたばかりの頃は「まずは動くこと」が大切です。しかし、少しずつVBAに慣れてきたら、ぜひ 「2」の直接指定する書き方 を習慣にしてみてください。

これだけで、あなたの作るマクロの動作は劇的にスムーズになります。一つずつ、できることを増やしていきましょう!

【業務効率化】VBAの記事を見る


VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を厳選して紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

この記事を書いた人
ぐー

手取り15万円の会社員でも、年間100万円以上の節約・資産管理・スキルアップで新NISAで年間360万円投資し、iDeCoもフル活用しています。日商簿記3級持っています。

このブログでは、私が実践してきた節約術やリアルな資産運用、稼ぐ力を高めるITスキルについて発信しています。

生活を豊かにしたくて、高配当株投資で年間配当金60万円をめざしています。現在は年間配当金25万円以上達成!

ゲーム・漫画・アニメなどが好きです。
一緒に資産形成をがんばりましょう!
よろしくお願いします!

ぐーをフォローする
【業務効率化】VBAITスキル
スポンサーリンク
ぐーをフォローする

コメント

タイトルとURLをコピーしました