今回は、シート上で選択した範囲内の各セルに対して、処理をしたいと
きに必須の処理です。
たとえば下図のようなデータがあるとします。

この範囲をすべて選択した場合、VBAからは単純に「selection」で取出すことができます。

先頭(左上)のセルは、selection(1)、その右はselection(2)、最後(右下)は、selection(20)で取出すことができます。

では下図のように、飛び飛びのセルを選択したときはどうでしょうか?

この場合には、以下のようなプログラムで取出すことができます。


'行ごとに分けて表示 tmpval = tmpval & tmpLine & vbCrLf Next idx_areas '取出した結果を表示 MsgBox tmpval end sub

実行結果は右図のようになります。

注意が必要なのは、「選択の仕方により結果
が変わる」ということです。今回は、以下の
順序で選択しています。
1.A1-E1をドラッグ
2.ctrlを押しながら、A2-B2をドラッグし、
D2-D4をドラッグ
3.ctrlを押しながら、C3をクリック
4.ctrlを押しながら、D4-D5をドラッグ
選択の順番でどのように変わるか、いろいろ
試してみてください。
ちなみに、すべてのセルを選択した場合にも、このプログラムで処理が可能で、下図のような結果になります。