【Excel VBA】行を追加、挿入するマクロを作成して効率化

プログラミングに必要なキーボード

こんにちは、タクローです。

Excelで表などのリストを管理していると、行を追加、あるいは挿入するようなシーンに直面することがあります。

そんな時、決まりきった操作なら、マクロに任せてしまうことで、作業の効率化を図ることができるかもしれません。

使いようによっては劇的な効率化を図ることができるマクロ。

そんなマクロを作るお手伝いをさせていただこうと思い、今回はExcel VBAで行を挿入する方法について解説していきます。

どうぞ最後までお付き合いください。

行を挿入するメソッド

Excel VBAで行を挿入する場合、Rows.Insertメソッド、あるいはRange.Insertメソッドを使います。

  • Rows.Insertメソッド
  • Range.Insertメソッド

Rows.Insertメソッドを使う

Rows.Insertメソッドを使う場合は、「Rows」に引数として挿入したい行を指定します。

例えばこんな感じです。

ActiveSheet.Rows(2).Insert

上はRows.Insertメソッドを使って行を挿入する例になりますが、「Rows」直後のカッコ内の引数に注目してください。

カッコの中に「2」を指定していますが、これは「2行目に行を挿入する」ことを意味しています。

挿入したい行番号を「Rows」の引数として指定すればよいのです。

Range.Insertメソッドを使う

Range.Insertメソッド使う場合は、「Range」に引数を指定します。

ただ、「Range」を使った場合、「Rows」と違い、引数に行番号は指定できないので注意が必要です。

先ほどの「Rows」の場合と同じ処理をするのに下のような書き方をします。

ActiveSheet.Range("A2").EntireRow.Insert

「Range」直後の引数に注目してください。

「Range」を使う場合は特定のセルを指定する必要が出てきます。

特定のセルをダブルクォーテーション(”)で囲って指定しましょう。

また、上の例の場合、「Range」に続けて「EntireRow」と書いていることにも注意してください。

これは、「セルA2を含んだ全体の行に1行挿入する」という意味になります。

ですから、「EntireRow」を使う場合は、「A2」でも「B2」、さらには「X2」でも2行目であれば、列は何でもいいのです。

「Range」を使う場合は、「Rows」と書き方が変わりますので注意しましょう。

セルを挿入できる!?

「Range」を使う時は、「EntireRow」をつけましょうと説明しました。

それじゃあ、「Range」に「EntireRow」をつけなかったらどうなるのでしょうか

実際に動作を確認した方がわかりやすいので、簡単なマクロを作成してみることにします。

まず、下のような表があったとします。

行を追加・挿入するメソッドサンプル

標準モジュールを新たに作成し、下のようなマクロを作成しました。

Public Sub Macro()

        ActiveSheet.Range("B2").Insert

End Sub

このマクロを実行した結果すると、表が下のようになります。

行を追加・挿入するメソッド実行結果

いかがでしょうか?

セルB2にセルを挿入して、今まであったセルの内容は全て下へ移動しています。

「EntireRow」をつけないと指定したセルに対し、挿入処理ができるようになります。

工夫次第でいろいろなシーンで使えそうですね。

まとめ

今回は行を挿入する処理について解説してきましたが、とても簡単にマクロを作成することができます。

例えば、Excelでリスト管理している場合があったとします。

このリストは新しく追加したデータ順に並んでいる、つまり上に行けば行くほど新しいデータになっているとします。

リストを追加する時に、いつも手作業で行を挿入してしていたなら、マクロの出番でしょう。

ボタンを設けて、それをクリックすれば、表の一番上に空白行を挿入できるマクロを作ってしまいましょう

こういったマクロであれば、たった一行で簡単に処理を書くことができます

ぜひ、試行錯誤しながら挑戦してみてくださいね。

最後まで、お付き合いいただき、ありがとうございました。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする