【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)
更新日 : 2021年4月23日

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

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

実行前:

サンプルコード:

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で行の操作をするケースは多いので、行挿入、コピー、削除を合わせて覚えておくのがおすすめです!

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

\業界最安級/
月額2,980円のプログラミングスクール

✔ 業界最安値の月定額2,980円
✔ 「Q&A掲示板」で平均30分以内に回答がもらえる
✔ 月に一度の「オンライン相談」で悩みを解決
✔ 教材の数は30種類以上
✔ 入会金不要+いつでも退会OK

公式サイトはこちら

Writer

Sanshiro Wakizaka

フリーランス

北海道出身の30歳で、フリーランスエンジニア兼テックライターとして活動中。新卒入社したメーカー系のIT企業で、システムエンジニアとして約5年勤務。

Webアプリ、業務アプリ開発において、要件定義 ~ 運用保守まで様々な経験あり。また3歳の娘がいる1児のパパで、日々娘との時間を確保するために仕事を頑張っています!
侍エンジニアでは、【誰でもわかるレベルのわかりやすさ】を意識して、記事を執筆中。

あなたの目的に合わせた
SAMURAI ENGINEERの運営サービス

SAMURAI ENGINEER Pro

未経験でも挫折しないプログラミングスクール

詳細はこちら

SAMURAI TERAKOYA

日本最大級のサブスク型オンラインITスクール

詳細はこちら

SAMURAI ENGINEER Freelance

「一人で稼げる」スキルを身につける

詳細はこちら
Close