罫線を引くセル範囲を自動認識させる
今度は、事前にセル範囲を選択する操作も不要なマクロに編集してみましょう。罫線を引きたいセル範囲内の任意のセルを選択しておき、そのセルを含むアクティブセル領域を利用して、罫線を引くセル範囲を自動認識させるのがポイントです。アクティブセル領域を参照するには、RangeオブジェクトのCurrentRegionプロパティを使用します。Selectionプロパティは、現在選択されているセルを参照するので、選択されているセルを含むアクティブセル領域、つまり罫線を引きたいセル範囲が参照できる、というわけです。
しかし、今回のように「表タイトル」も入力されている場合、表タイトルの範囲までアクティブセル領域として選択されてしまいます。
タイトル行以外を選択する工夫
そこで、次のように工夫します。まず、アクティブセル領域を選択してから、タイトル行の1行分だけ選択領域を小さくしたセル範囲を選択します。これでは、罫線を引くセル範囲の1行分上のセル範囲を選択している状態なので、選択領域を1行分下に移動します。選択領域を小さくしたセル範囲を選択するにはResizeプロパティを使用します。引数RowSizeに、調整後のセル範囲のサイズを指定します。今回は1行分だけ小さいサイズにしたいので、「選択されているセル範囲の行数」から1引いたサイズを指定します。
※「選択されているセル範囲の行数」は、選択されているセル範囲のすべての行をRowsプロパティで参照してから、RowsコレクションのCountプロパティを使用して行数を取得します。 ※列のサイズを調整するには、Resizeプロパティの引数ColumnSizeに列数を指定します。 |
選択範囲を1行分下に移動するにはOffsetプロパティを使用します。1行分だけ下に移動したいので、引数RowOffsetに「1」を指定します。
※上側に移動したい場合は、マイナスの値を設定します。 ※列方向に移動する場合は引数ColumnOffsetを使用します。 |
これで、罫線を引きたいセル範囲内のセルをひとつ選択するだけで、タイトル行を除いたセル範囲に罫線を引くマクロに編集できました。試しに、別なセル範囲にデータを入力して、マクロを実行してみましょう。
※ResizeプロパティのステートメントとOffsetプロパティのステートメントは、1行にまとめることができます。1行にまとめると「Selection.Resize(Selection.Rows.Count - 1).Offset(1).Select」となります。 |