「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行目に行挿入をできます。
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 行挿入 挿入行を変数で指定」
ということですから、上記のようなマクロにしています。
複数行を挿入するサンプルマクロ
複数行を挿入する場合は、以下のようなマクロです。
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
のようなコードを気持ち悪く感じる方もいらっしゃるようです。
そういった方には、以下のようなマクロです。
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」のように「&」を使った文字列結合に、慣れることをおすすめします。
- Newer:Split関数の戻り値が配列かどうか調べる
- Older:RGB色見本を作成するExcelマクロ
Home » Excel VBA Rangeオブジェクト » 行・列を表すRange » VBAで行挿入を行う