こんにちは、タクローです。
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でリスト管理している場合があったとします。
このリストは新しく追加したデータ順に並んでいる、つまり上に行けば行くほど新しいデータになっているとします。
リストを追加する時に、いつも手作業で行を挿入してしていたなら、マクロの出番でしょう。
ボタンを設けて、それをクリックすれば、表の一番上に空白行を挿入できるマクロを作ってしまいましょう。
こういったマクロであれば、たった一行で簡単に処理を書くことができます。
ぜひ、試行錯誤しながら挑戦してみてくださいね。
最後まで、お付き合いいただき、ありがとうございました。