Selection

VBAプログラムというよりマクロ寄りの使い方をしたいとき、またはマクロそのものを作る時には便利な手法。
特定の領域(セル)を選択し、それに対してのみデータを加工したいということもある。
選択したところだけ色を塗るとか、各セル全て同じような操作をするときは「マクロの記録」を使った方が早い。
しかし例えば選択したセルの文字列全ての頭に“○”をつけるとか言うのはマクロではできないし、もっと複雑なことをしたいこともある。

これを実現するにはSelectionを使えば良い。

SelectionはRange型の集合体(コレクション)と考えれば良さそうだ。
まずはためしに選択したセル全ての位置(アドレス)を表示するプログラムを書いてみる。
定石通りFor Eachで取り出してループにする。

Dim r As Range
For Each r In Selection
    Debug.Print r.Address
Next

変数rはセル一つを示すRange型なので代入や値の読み出しやら自由にできる。

先に言った「○をつける」を書くなら

Dim r As Range
For Each r In Selection
    r.Value = “○” & r.Value
Next

で良い。

-