VBAを使ったExcelのマクロを学び始めた方の中には、
「Selectionって何?」「よく見るけどどう使うの?」
と疑問に思ったことがある方も多いのではないでしょうか。
この記事では、VBAのSelectionオブジェクトについて、
基本的な使い方から注意点、実用的なコード例までわかりやすく解説します。
初心者の方でもすぐに試せる内容なので、ぜひご活用ください。
VBAのSelectionとは?
Selectionは、Excelの現在選択されているセルを示すオブジェクト(操作対象の物やデータ)です。
例えば「A1~B2」まで範囲選択されたセルがあるとします。

この範囲セルを「Selection」という1単語のみで操作することができるということです。
例えば、「Selectionよ、黄色の背景になりなさい」と命令すれば、「A1~B2」セルは黄色くなります。

セル1つ1つが人間と言い換えるなら、「Selection」はコンビやグループと言ったところでしょうか。
「今立ち上がっている4人組!ジャンプしなさい!」みたいなものだと思ってください。
「田中君、鈴木さん、高橋君、佐藤さん、ジャンプしなさい!」というより楽ですよね。
もちろん「Selection」は範囲選択だけではなく、「A1のみ」などの単体選択でも機能します。
では、「Selection」の書き方・使い方を見ていきましょう。
Selectionの書き方・使い方
まずは簡単な使い方を例に、基礎を学びましょう。
簡単な使い方
下図のような元データがあります。

下記VBAコードは、「Selection」に「Utatane」と書き込む例です。
Sub 書き込み()
Selection.Value = "Utatane"
End Sub
1つ1つ解説していきます。
プロシージャの作成
Sub 書き込み()
End Sub
プロシージャなど、マクロの基礎は下記記事でわかりやすく解説しております。
コードだけではなく、開発タブの表示からマクロの保存まで知りたい方はご参考ください。
Selectionへの書き込み
Selection.Value = "Utatane"
上記コードにて、Selection(選択されたセル)へ値を書き込みしています。

今回の場合は、「A1~B2」セルが範囲選択されていたため、
その範囲に「Utatane」が書き込みされました。
もし、「A1~Z9999」が選択されていたら、大量の範囲が処理されることになりますので注意しましょう。
ひとまず基本である「値の書き込み」を解説いたしました。
「Selection」はさまざまな使い方ができます。
次項でいくつか紹介いたします。
よく使うSelectionのコード例
ここからは、よく使うSelectionの活用例を見ていきましょう。
フォントサイズや色を変更する
下記コードを実行することで、Selectionのフォントサイズや文字色を変更できます。
Sub フォントサイズや色を変更する
Selection.Font.Size = 14
Selection.Font.Color = vbRed
End Sub
行や列の削除・挿入
行や列を削除したり、挿入することもできます。
Sub 行や列の削除挿入
Selection.EntireRow.Delete
Selection.EntireColumn.Insert
End Sub
コピー・貼り付け
Selectionの値や書式を別のセルにコピーすることもできます。
Sub コピー貼り付け
Selection.Copy
Range("B1").PasteSpecial
End Sub
行の高さや列幅を変更
行の高さや列の幅をまとめて変更することもできます。
Sub 行の高さや列幅を変更
Selection.RowHeight = 20
Selection.ColumnWidth = 15
End Sub
応用例・実践の活用例
「Select」と「Selection」とを連携することで、
「セル選択→選択範囲の処理」というように特定のセルを操作することもできます。
下記のVBAコードは「A1~B2」セルを選択した後、「Selection」で処理した例です。
Sub セル選択から処理まで()
Range("A1:B2").Select
Selection.Value = "Utatane"
End Sub

Selectによる選択方法は下記記事で詳しく解説しております。ご参考ください。
Selectionを使う際の注意点
便利な「Selection」ですが、扱う際に注意すべきところがあります。
実行時の選択状態に依存する
実行時に違うセルが選ばれていると、想定外の動作をすることがあります。
例えば、「A1~B2」を処理したかったのに、「A1(実際の選択セル)」のみが処理される場合があるということです。
「Select」を使ってセルを再選択するか、「Range」を使って確実にセルを指定してください。
Range("A1:B2").Select
Selection.Value = "Utatane"
Range("A1:B2").Value = "Utatane"
複数人で使うファイルでは誤動作の原因になる
他人が別のセルを選んでいた場合、意図しない箇所に影響が出る可能性があります。
共有ファイルなどには「Selection」を使わないようにしましょう。
うまく動作しないときの対処法
エラーが発生する
コンパイルエラー・実行時エラー
コードに問題がある場合が多いです。
「”」や()など、2つセットの記号が片方だけになっていないかなど、コードを再確認しましょう。
セル名を「”」で囲っていない場合でもエラーが発生します。
警告表示

上記の表示が出た場合は、マクロが無効になっています。
エクセルに表示された「コンテンツの有効化」をクリックするか、下記記事を参考にセキュリティ設定を変更してください。
最後に
VBAの「Selection」について解説いたしました。
当ブログでは、VBAマクロやPythonなど、時間を生み出すプログラミング術を公開しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。
最後までお読みいただき、ありがとうございました。がんばってください!