【Excel VBA】行・列を1行おきに挿入するマクロ【詳しく解説】

VBA

この記事は

  • 列と列の間に列を挿入するマクロ
  • 行と行の間に行を挿入するマクロ

を紹介していきます。
非常にシンプルなコードで書けますので、参考にして下さい。

また、コードの特性や注意点も解説していますので自分なりにアレンジしてマクロ作成の資としてください。

下記の画像のようにセルの行間、列間に空白のセルを挿入していきます。

スポンサーリンク

行間の挿入(1行おきに行を挿入する)マクロ

行間の挿入(1行おきに行を挿入する)マクロは以下の通りです。

Sub 行間の挿入()
    
    '変数の宣言
    Dim row_count As Long
    
    '最終行の取得
    row_count = Cells(Rows.Count, 1).End(xlUp).row
    
    '行の挿入の繰り返し
    For row_count = row_count To 2 Step -1
        Rows(row_count).Insert
    Next row_count

End Sub

コードの解説

変数の宣言

最終行を保存しておくための変数を宣言しています。
変数名はrow_countとしていますが、なんでも大丈夫です。後々読んでもわかる変数名にしましょう。

最終行の取得

最終行の見つけ方は行の一番下から上に登っていき、セルに何か入っているところを最終行番号として取得しています。

ちなみに下記の画像では「10」を取得しています。
この10という数字を変数row_countに格納しています。

行の挿入の繰り返し

今回は最終行から先頭行に向かって1個ずつ行を挿入していっています。
ポイントは2行目~10行目ではなく、10行目~2行目に順番に行を挿入している点です。
行を挿入すると行数が変わっていきます。
2行目に列を挿入すると、最終行は11行目になります。
ですが、10行目で繰り返しは終わってしまいますので、途中で行の挿入が終わってしまうという事態に陥ります。
しかし、10行から行を挿入していくと、10行目に行を挿入し、最初10行目だった行は11行目に移動します。そして次は9行目にいきますので、後ろの行がいくら増えても問題ありません。

考え方

上記の説明とかぶってしまいますが、今回の考え方は最終行から行を挿入していくという点です。

列間の挿入(1列おきに行を挿入する)マクロ

列間の挿入(1列おきに列を挿入する)コードは下記の通りです。

Sub 列間の挿入()
    
    '変数の宣言
    Dim column_count As Long
    
    '最終列の取得
    column_count = Cells(1, Columns.Count).End(xlToLeft).column
    
    '列の挿入の繰り返し
    For column_count = column_count To 2 Step -1
        Columns(column_count).Insert
    Next column_count

End Sub

コードの解説

変数の宣言

最終行を保存しておくための変数を宣言しています。
変数名はcolumn_countとしていますが、なんでも大丈夫です。後々読んでもわかる変数名にしましょう。

最終列の取得

最終行の見つけ方は列の一番右から左に移動していき、セルに何か入っているところを最終列番号として取得しています。

ちなみに下記の画像では「7(G)」を取得しています。
この7という数字を変数column_countに格納しています。

列の挿入の繰り返し

今回は最終列から先頭列に向かって1個ずつ列を挿入していっています。
ポイントは2列目~7列目ではなく、7列目~2列目に順番に列を挿入している点です。
列を挿入すると列数が変わっていきます。
2列目に列を挿入すると、最終行は8列目になります。
ですが、7列目で繰り返しは終わってしまいますので、途中で列の挿入が終わってしまうという事態に陥ります。
しかし、7列目から列を挿入していくと、7列目に列を挿入し、最初7列目だった行は8列目に移動します。そして次は6列目にいきますので、後ろの列がいくら増えても問題ありません。

考え方

上記の説明とかぶってしまいますが、今回の考え方は最終列から列を挿入していくという点です。

行間の挿入と列間の挿入を活用して周辺のセルを空白にするマクロ

これは必要はどうかわかりませんが、行間の挿入と列間の挿入を完成させている今、下記の2行のコードで実装することができます。

Sub 行列の挿入()
    行間の挿入
    列間の挿入
End Sub

日本語が多すぎてコメントしかないように感じますが、「行間の挿入」と「列間の挿入」はコードです。
さっき作成したコードを呼び出しているだけです。わかりづらいと思う方はCallメソッドを使用すると分かりやすいです。

Sub 行列の挿入()
    Call 行間の挿入
    Call 列間の挿入
End Sub

各メソッドの特徴や注意点

Insertメソッドの特徴について

Insertメソッドは行、列、セル、レンジに対して使えるメソッドです。
Insertメソッドには下記の特徴があります。

  • 行に対するInsertメソッドの特徴
    行を挿入した後は行を下に押し出します。(感覚でいうと、選択した行の上に行を挿入する。)
  • 列に対するInsertメソッドの特徴
    列を挿入した後は列を右に押し出します。(感覚でいうと、選択した列の左に列を挿入する。)
  • セルに対するInsertメソッドの特徴
    セルを挿入した後はセルを下に押し出します。(行の特徴の同じ)
  • レンジに対するInsertメソッドの特徴
    レンジを挿入した後はレンジを右に押し出します。(列の特徴と同じ)

For Next 文のStepとは

Stepは繰り返し方を決める場合に使用します。
デフォルトでは数字は1ずつ増えていきます。それを2ずつ増やしたい場合は Step 2 と記述します。
また、1ずつ減らしたい場合は Step -1 と記述することによって1ずつ減らすことができます。

Columns・Rowsについて

・Columns
Columnsは列すべてを選択することができます。
・Rows
Rowsは行すべてを選択することができます。

まとめ

列の挿入や行の挿入は非常に簡単に実装することができますので、参考にしてみてください。
行間・列間に2行挿入したい場合は、for文の中のInsertの行を必要分記述するだけで実装することができます。
応用の仕方は人それぞれです。好きなようにアレンジしてみてください。
ここまで読んで頂きありがとうございました。
Twitterフォローしていただけると非常にうれしいです。

コメント

タイトルとURLをコピーしました