VBAで選択しているセルに文字を入れたい!
マクロの記録を使って効率的にVBAを書きたい!
VBAでの選択したセルの処理は、意外と教本等で取り扱われない処理です。一からコードを書く時にはあまり使わないため、知らないという人も意外といる処理の一種です。
この記事では、VBAで「選択中のセル」を扱う基本、Selectionの使い方をご紹介します。また、Selectionはマクロの記録と組み合わせることで、力を発揮する処理です。この記事では、マクロの記録との組み合わせ方法についても紹介していきます。
また、コピペで使える使い方や、入れるだけで高速化できるコードなども紹介します。この記事を読めばSelectionの使い方はマスターできる内容となっているので、ぜひ最後まで見てみてください!
目次
コピペでOK!Selectionの具体的な使い方3パターン
まずはSelectionを使ったVBAコードの具体的なパターンを3つ紹介します。
Selectionの魅力は何といっても、感覚的に使える点です。これらをコピペするだけでも、作業を自動化できるので、初心者の方もコピペと修正で使ってみてください!
そもそもVBAのコードをどこにコピペしていいかわからない、という方はこちらの記事を参考にしてみてください!
パターン1:選択セルに「特定の文字」を入力する
一番よく使う、特定の文字を入力するパターンです。
Sub Input_Text()
' B3セルを選択する
Range("B3").Select
' 選択したセルに「完了」と入力する
Selection.Value = "完了"
End Sub

パターン2:選択セルの「数値を計算」する(値を足す)
選択したセルの現在の値を使って、計算することも可能です。
例えば、カウンターのように「1」を足す処理も自動化できます。
Sub Add_Value()
' C5セルを選択する
Range("C5").Select
' 選択したセルの現在の値に5を足す
Selection.Value = Selection.Value + 5
End Sub

パターン3:選択セルに「関数」を入力する (Selection.Formula)
値や文字列ではなく、「数式」自体を入力したい場合もあります。
その場合は、.Valueの代わりに.Formulaを使います。
Sub Input_Formula()
' D10セルを選択する
Range("D10").Select
' 選択したセルにSUM関数(=SUM(D1:D9))を入力する
Selection.Formula = "=SUM(D1:D9)"
End Sub

このようにSelectionは、直感的にセルを操作できます。半面、コードが長くなりやすく、動作が遅くなりやすいのがデメリットです。ただデメリットは、後ほど紹介する方法で改善できるため、気になる方は確認してみてください。
ここからは、Selectionについて詳しく解説していきます。
VBAで「選択したセル」に文字を入力する基本!『Selection』とは
まず、今回テーマとなるSelectionについて解説します。Selectionは、VBAで「現在選択されているもの(セル、範囲、図形など)」を指す専門用語です。そのため、Selection.Valueと記述すると、「今選んでいるセルの値」という意味になります。
この方法の最大のメリットは、VBA初心者でも直感的にイメージしやすい点にあります。普通VBAでセルの場所を指定するときは、「=」を使ってデータのやり取りを行います。慣れればわかりやすいですが、普段の動作と違うため、直感的にはわかりにくいというのがこの書き方のデメリットです。

ただSelectionを使えば、「①セルを選ぶ」→「②文字を入れる」という操作と全く同じ順番でコードを書くことができます。そのため、「VBAに指示をしている」という感覚を掴みやすいのです。
Selectionを使う時の「ルール」と「注意」
Selectionは直感的で非常に便利ですが、場所指定と処理速度の2つの点に注意が必要です。ここでは、ルール・注意という二つの項目でその内容について解説していきます。
ルール:必ず先に Range.Select で場所を指定する
Selectionは、「今選んでいる場所」を指すコードです。そのため、「Selectionで動作させる場所」を明確に指示してあげる必要があります。
例えば、いきなりSelection.Value = "NG"とだけ書いたコードを実行すると、前回たまたま選択していたセルに書き込んでしまいます。これを防ぐため、必ずRange("A1").Select → Selection.Value = "OK"のように、Select(選ぶ動作)とSelection(選んだ場所)はセットで使うようにしましょう。
注意点:Selectionを使うとコードが長くなりやすく、処理が遅くなりやすい
Selectionを使う注意点「コードの長さ」と「処理速度」です。
コードの長さについては、Select(選ぶ動作)とSelection(選んだ場所)を書く必要があるため、どうしても長くなってしまいます。長い動作を書く場合は、読みにくくなりやすいため、Selection以外のコードを使うなどの工夫が必要です。
また処理速度についてですが、Selectionを多用すると、VBA処理は確実に遅くなります。
なぜなら、Excelが「画面を移動する」「セルを変更する」といった人間の操作を、律儀に再現しようとするからです。処理が大量にあると、画面がチラチラと激しく動きます。これが、VBAの実行速度が遅くなる原因です。
ただし、この「遅い」というデメリットは、「画面停止」で完全に解決できます。後で紹介するコピペコードで簡単に実装できるので、ぜひ活用してみてください。
【効率化】「選択セルへの入力」は “マクロの記録” が最強
ここまでSelectionのコードを紹介してきましたが、正直これらは手打ちで書くメリットはあまりありません。手打ちでかけるのであれば、Rangeなどの普通の書き方をするほうがよっぽどメリットが大きい方法です。
Selectionで一番効率がいいのが、「マクロの記録」機能を使ってコードを自動作成するときです。直感的にミスなく作成でき、AIに作らせるよりも簡単です。
3ステップでできるので、ぜひこの機会にやってみてください。
「マクロの記録」でコードを作る3ステップ
手順はたったの3ステップです。開発タブがない方や、細かいやり方がわからない方は、こちらの基本コードの記事を確認してみてください!
「開発」タブ → 「マクロの記録」
開発タブをクリックして、左側のコードにある「マクロの記録」をクリックします。
標準では「開発」タブは表示されない設定になっているので、表示されない方は基本設定を行ってください。

記録したい操作 → 「記録終了」
記録したい操作を行った後、先ほど「記録終了」を押します。
今回は、A1に「テスト」と記入する操作を記録しました。

VBAのコード編集画面を確認します。
記録されたコードの確認方法は、「マクロ」ボタンをクリックします。

表示されたウインドウに、今エクセルに入っているVBAがすべて表示されます。マクロの記録では「Macro〇(数字)」という名前で保存されます。そのため、一番新しいマクロが、一番数字が大きいマクロになります。
今回作ったマクロの中身を見るため、一番番号が大きい「Macro」を選択し「編集」をクリック

コード上はActiveCell(アクティブなセル)と記録されますが、これはSelectionとほぼ同じ意味だと考えて問題ありません。

【必須テク】Selectionの”遅さ”を解決する「画面停止」コード
先ほど紹介したSelectionの”遅さ”は、「マクロの記録」でも頻発する問題です。しかし、これから紹介する「画面停止」コードを追記するだけで、この問題は解決します。
これは、Selectionの「直感性」と、Range指定の「高速性」の、両方の”いいとこ取り”ができるVBAの必須テクニックです。
コピペ用:VBAの処理を高速化する「画面停止コード」
「マクロの記録」で作成したコードに、以下の2行を追加します。
Sub Macro_Optimized()
' ↓ 画面停止(開始)処理を高速化
Application.ScreenUpdating = False
' ~~ 「マクロの記録」で作成したコード ~~
' ↓ 画面停止(終了)画面の表示を元に戻す
Application.ScreenUpdating = True
End Sub
「マクロの記録」コードの “どこ” に挿入すれば良いか?
使い方は非常に簡単です。Sub ... の直後にApplication.ScreenUpdating = Falseをコピペ。そして、End Sub の直前にApplication.ScreenUpdating = Trueをコピペ。たったこれだけです。
これだけで先ほど記録したマクロの画面のチラつきがなくなり、処理が劇的に速くなります。コピペだけで軽くなるので、ぜひこのコードは追加するようにしてみましょう
まとめ:Selectionと「マクロの記録」でVBAの第一歩を踏み出そう
VBAで選択セルに値を入力するには、Selection.ValueがVBA初心者にとって最も直感的で最適な方法です。「マクロの記録」でコードを自動作成し、コピペした「画面停止コード」で挟み込むことでデメリットもほとんどなく、AIよりも簡単にコーディングができます。VBAの詳しい知識が少なくても、日々の業務を高速で自動化できるので、ぜひ、試してみてください!
「マクロの記録」でVBAの便利さを体感したら、次はコードの意味(RangeとCellsの違い、For Nextループなど)を学ぶことをお勧めします!コードが読めるようになると、「マクロの記録」で作ったコードを自分で修正・応用できるようになり、自動化の幅が劇的に広がります。
当ブログでもVBAの基本を解説していますが、体系的に学ぶなら書籍もおすすめです。おすすめ書籍もこちらで紹介しているので、ぜひ合わせて確認してみてください!





コメント