[VBA] Selectionの一番上の行だけ選択を解除する方法

ちょっとした小技なんですけれども。VBAでselectした範囲のうち、1行目がいらないので選択を解除したいときってあると思うんですよね。例えば、データの入っているセル全部を選びたいんだけど、1行目はデータの見出しなのでいらない、というような場合です。

まぁ、やり方はいろいろあると思うんですが、結構楽チンなんじゃないかなと思う方法を紹介します。2行以上の範囲を選択している前提です。

Application.Intersect(Selection, Selection.Offset(1, 0)).Select

Intersectというのは、範囲の重なっている部分を返すApplicationのメソッドです。「Application.Intersect(範囲1,範囲2,…)」と使います。範囲は30個まで指定できます。まぁ、そんなに指定することはないと思うけど。

Offsetは、Rangeオブジェクトのプロパティで、下にいくつ、右にいくつ動かした後のRangeを返してくれます。ここでは「(1,0)」としているので、selectしている範囲全体を下に1つずらした範囲が返ります。

つまり、もとの選択範囲と、それを1つ下にずらした範囲との重なっている部分を取得しているわけです。これはつまり、元の選択範囲から1行目を取り除くのと同じです。これをselectすれば、一番上の行だけ選択を解除したような結果が得られるということですね。

前の記事:
はてブいじりをリニューアルしました!
次の記事:
[ VBA ] オートフィルタで絞り込んだ結果を選択する