2023年12月18日【ID:0】
【ExcelVBA】予定表の各日付に1行を追加する
以下のように、すでに予定が入力されている予定表(スケジュール表/カレンダー)があります。

1日2行単位の予定表になっているのですが、1行を加えて3行単位に変更する場合、手作業で行うのは大変になります。
このような時に、VBAが使えると便利になります。
こちらでは、VBAを使って既存の予定表に1行追加する方法について解説していきます。
※こちらの記事では、開発したExcelファイルを配布しています。
手順確認
まずは、開発する手順を考えます。
行を挿入したい行が、4行目、6行目、10行目、…の場合、4行目から順番に挿入していけば良いように感じますが、実はそれでは上手くいきません。

その理由は、4行目を挿入した時点で、その次に挿入する予定だった行(6→7行目)が1行下へ移動してしまうためです。

そのため、行を一定間隔で挿入するプログラムを開発する際は、表の先頭からではなく、表の最終行から行うと良いです。
次に、表の中の行を挿入する最終行の確認をします。
こちらの表の場合は、186行目になります。

そのため、実行する手順は以下のようになります。
・186行目から4行目まで、2行ずつ上に移動しながら行を挿入
ちなみに、今回の手順の場合、予定表の真ん中に行を挿入することになります。

下に挿入するようにする場合は、罫線が崩れてしまう可能性があるため、挿入時に罫線を設定するプログラムも実装する必要があります。
※こちらでは、予定表の真ん中に挿入する方法のみを解説していきます。

開発
では、以下の内容をVBAで実現していきます。
・186行目から4行目まで、2行ずつ上に移動しながら行を挿入
まず、[開発]タブの中の[マクロ]を選択します。

次の画面にて、好みの名前を入力し、[作成]を選択します。
こちらでは、「行挿入」という名前を入力しています。

標準モジュールが作成されましたら、以下のように記述します。
Sub 行挿入()
Dim i As Integer
For i = 186 To 4 Step -2
Rows(i).Insert
Next i
End Sub
・Dimでは数値を格納する用の入れ物「i」を用意しています。(変数の用意)
・For ~ Next間で「i」の値を変えながら繰り返し実行しています。
・For ~ Next間の「i」は、186から4まで、-2ずつ変化させています。
・Rows(i).Insert で「i」行目に行を挿入しています。
記述できましたら、実行ボタンを押すことで、瞬時に予定表の各日程に1行挿入されます。

VBAは理屈が分かってくると、そこまで難しいものではないので、まだVBAを触ったことがない方は挑戦してみることをオススメします。
▼サンプルファイル▼