【ExcelVBA入門】行を挿入するためのInsertメソッドの使い方とは

皆さんは、VBAで行の挿入をする方法を知っていますか?データの追加をする際に、行を挿入するケースはよくありますよね。

そこで今回は、

  • 行を挿入する方法

といった基礎的なことから、

  • セル範囲を指定して行を挿入する方法
  • 複数行を指定して行を挿入する方法
  • 合わせて覚えると便利な行のコピー・削除方法

といった応用的な方法まで、徹底的に解説します!

行を挿入するためのInsertメソッドの使い方とは

はじめに、行を挿入する方法について簡単に解説します。VBAで行を挿入する場合は、Insertメソッドを使って以下のように書きます。

使い方:

Rows(行番号).Insert             '行番号を指定する場合
Range(セル名).EntireRow.Insert  'セル名を指定する場合

「Rows(行番号).Insert」は行番号に入れた行に直接行を挿入します。

「Range(セル名).EntireRow.Insert」は「Range(セル名).EntireRow」で指定したセルの行数を取得してから、行を挿入します。また、次のようにオプションを後ろに付けて挿入することもできます。

オプションを付けた場合

Rows(行番号).Insert shift:=xlShiftDown

shiftオプションは挿入後に移動するセルの移動方法を指定することができ、「xlShiftDown」で下に移動、「xlShiftToRight」で右に移動することができます。

このように、簡単に行を挿入することができます。

サンプルコード

次に、サンプルコードをもとに、具体的な使い方を解説します。

行を指定して1行挿入

はじめに、1行挿入する方法について解説します。

実行前:

サンプルコード1:

Sub Test1()
  Rows(3).Insert
End Sub

サンプルコード2:

Sub Test1()
  Range("A3").EntireRow.Insert
End Sub

実行後:

サンプルコード1、2はどちらも同じ意味なので、直接行番号を指定する場合、セル名で指定する場合など用途に応じて使い分ければOKです。

セル範囲を指定して1行挿入

次に、セル範囲を指定して行挿入する方法について解説します。

実行前:

サンプルコード:

Sub Test3()
  Range("A3:B3").Insert
End Sub

実行後:

サンプルでは、A3、B3セルに行を挿入しています。

「Range("A3:B3")」のセル範囲を変更すれば、指定範囲で挿入することができます。行全体ではなく範囲を指定して挿入する場合は、この方法を使えばOKですね。

複数行挿入

次に、複数行を一括で挿入する方法について解説します。

実行前:

サンプルコード:

Sub Test4()
  Range("3:5").Insert
End Sub

実行後:

サンプルでは、3行目~5行目にに行を挿入しています。

「Range("3:5")」の行番号の範囲を変更すれば、指定した行数分挿入することができます。複数行を挿入する場合は、この方法を使えばOKですね。

変数を使った挿入

次に、変数を使った行の挿入方法について解説します。

実行前:

サンプルコード1:

Sub Test5()
  Dim intRow As Integer
  intRow = 5

  Rows(intRow).Insert
End Sub

サンプルコード2:

Sub Test6()
  Dim intRow As Integer
  Dim cel1 As String
  Dim cel2 As String
  intRow = 5
  cel1 = "A" & intRow
  cel2 = "B" & intRow

  Range(cel1 & ":" & cel2).EntireRow.Insert
End Sub

実行結果:

どちらも5行目に行を挿入する処理ですが、行数を変えたい場合に変数に入れている値を変えるだけで済むため、使い勝手がよくなるのでおすすめです!

なお、サンプルで紹介している「"A" & intRow」は文字列を結合して「"A5"」になるように書いていますが、文字列の結合方法は他にもいろいろあります。

興味がある方は以下も見てみてくださいね!

【VBA入門】文字列の結合を高速にする方法(Mid、Join)
更新日 : 2019年4月18日

選択している行のすぐ下に挿入

次に、選択している行のすぐ下に挿入する方法について解説します。

実行前:

サンプルコード:

Sub Test7()
  Rows(ActiveCell.Row + 1).Insert
End Sub

実行後:

選択している行は「ActiveCell.Row」で取得することができるので、「ActiveCell.Row + 1」で選択している行の下の行に挿入しています。

列を挿入する方法とは

ここまで行を挿入する方法を解説してきましたが、同じような方法で列も簡単に挿入することができます。

実行前:

サンプルコード1:

Sub Test8()
  Columns(2).Insert
End Sub

サンプルコード2:

Sub Test9()
  Range("B1").EntireColumn.Insert
End Sub

実行後:

列番号を指定する場合はRowsの部分をColumnsに変更し、セル名で挿入する場合も「EntireRow」を「EntireColumn」にするだけなので、覚えやすいですね。

このように、列も簡単に挿入することができます。

補足:合わせて覚えると便利な行コピー・削除方法

最後に、行の挿入とあわせて覚えておくと便利な行のコピー、削除方法について解説します。

行をコピーする場合は、Copyメソッドを使って次のように書きます。

実行前:

行コピーサンプルコード:

Sub Test10()
  Rows(2).Copy Destination:=Rows(10)
End Sub

実行後:

行を削除する場合は、Deleteメソッドを使って次のように書きます。

実行前:

行削除サンプルコード:

Sub Test11()
  Rows(10).Delete
End Sub

実行後:

行のコピー、削除どちらも簡単にできるので、合わせて覚えておくのがおすすめです!

以下で詳しく解説しているので、さらに知りたい方は見てみてくださいね!

【ExcelVBA入門】行をコピーするためのCopyメソッドの使い方とは
更新日 : 2019年4月2日
【VBA入門】行・列の削除とクリアをする方法
更新日 : 2019年4月25日

まとめ

今回はVBAで行をコピーする方法について解説しました。

Excelで行の操作をするケースは多いので、行挿入、コピー、削除を合わせて覚えておくのがおすすめです!

どれも使い方は簡単なので、ぜひ使ってみてくださいね!

LINEで送る
Pocket

「プログラミング、右も左もわからない…」という方にオススメ

当プログラミングスクール「侍エンジニア塾」では、これまで6000人以上のエンジニアを輩出してきました。

その経験を通してプログラミング学習に成功する人は、「目的目標が明確でそれに合わせた学習プランがあること」「常に相談できる人がそばにいること」「自己解決能力が身につくこと」この3つが根付いている傾向を発見しました。

侍エンジニア塾は上記3つの成功ポイントを満たすようなサービス設計に磨きをかけております。

cta_under_bnr

「自分のスタイルや目的に合わせて学習を進めたいな」とお考えの方は、ぜひチェックしてみてください。

書いた人

Sanshiro Wakizaka

Sanshiro Wakizaka

新卒入社したメーカー系のIT企業で、システムエンジニアとして約5年勤務。
Webアプリ、業務アプリ開発において、要件定義、設計、インフラ、製造、テスト、運用保守など、様々な経験あり。
また、侍ブログ編集部として、これまでに200記事以上の記事を執筆。
現在はフリーランスエンジニア兼テックライターとして活動中。