Home » ExcelVBA Rangeオブジェクト » 行・列を表すRange » VBAで行挿入を行う

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

「vba 行挿入 変数」
「vba 行挿入 挿入行を変数で指定」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

Excel VBA(Visual Basic for Applications)で行を挿入するときに、変数を使って挿入する行を指定するには、具体的にどのようなコードを書けばいいのかを探している方による検索でしょうか。

例えば、10行目を選択して行挿入を行う操作をマクロ記録すると、以下のようなコードが自動的に作られます。

Sub sample()
 Rows("10:10").Select
 Selection.Insert Shift:=xlDown
End Sub

この「Rows("10:10")」のような部分を、プログラミングに慣れていない方の場合、変数を使って書くのに戸惑ってしまうのは納得できることです。

この記事では、簡単なマクロをご紹介しておきます。

[スポンサードリンク]

行を挿入するサンプルマクロ

以下のようなマクロで、10行目に行挿入をできます。

Sub 行を挿入する()
 Dim row_num As Long

 row_num = 10
 Rows(row_num).Insert
End Sub

マクロ記録を行うと一行の行挿入でも「Rows("10:10")」のような「"」(ダブルクォート)と「:」(コロン)の使われたオブジェクト式が作られます。

ですが10行目に1行だけ挿入するのなら「Rows(10).Insert」のように、「"」も「:」も使わなくてOKです。

また事前に選択するといった処理も必要はありません。
RangeオブジェクトのInsertメソッドをいきなり実行できます。

今回は、
「vba 行挿入 挿入行を変数で指定」
ということですから、上記のようなマクロにしています。

複数行を挿入するサンプルマクロ

複数行を挿入する場合は、以下のようなマクロです。

Sub 複数行を挿入する()
 Dim row_a As Long
 Dim row_z As Long

 row_a = 10
 row_z = 15
 Rows(row_a & ":" & row_z).Insert
End Sub

ポイントは
「Rows(row_a & ":" & row_z)」
の部分でしょう。
この記述で、
「Rows("10:15")」
といったコードと同じになります。

RangeプロパティとRowsプロパティを組み合わせて複数行を挿入するサンプルマクロ

ある程度プログラミングに慣れている方の場合、上記マクロの、
  Rows(row_a & ":" & row_z).Insert
のようなコードを気持ち悪く感じる方もいらっしゃるようです。

そういった方には、以下のようなマクロです。

Sub 複数行を挿入する_RangeとRows()
 Dim row_a As Long
 Dim row_z As Long

 row_a = 10
 row_z = 15
 Range(Rows(row_a), Rows(row_z)).Insert
End Sub

RangeプロパティとRowsプロパティを組み合わせればOKです。

ただし、
  Range(Rows(row_a), Rows(row_z)).Insert
というオブジェクト式のほうが、先の、
  Rows(row_a & ":" & row_z).Insert
よりも難易度は上がります。

「vba 行挿入 変数」
といった検索をするレベルの方で、自分でマクロを書けるようになりたいという方には、まず「row_a & ":" & row_z」のように「&」を使った文字列結合に、慣れることをおすすめします。

[スポンサードリンク]

Home » ExcelVBA Rangeオブジェクト » 行・列を表すRange » VBAで行挿入を行う

「行・列を表すRange」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.