【簡単便利!】1行ごとに行を挿入する方法を初心者向けに解説!【Excel VBA】
こんにちは!『ルウちゃんのExcel Labo』管理人の@rouxchanblogです!
今回はこのような悩みについて解説します。
1行ごとに行を挿入する方法ってどうやるの?
- 1行ごとに行を挿入する方法
- Insertメソッドの使い方
- 繰り返し処理の考え方
サンプルコード紹介
1行ごとに行を挿入するには「行の挿入」、「最終行の取得」、「繰り返し処理」を組み合わせることが必要です!
まずはサンプルコードと実行画面を見て、動きを確認してみましょう!
Dim 最終行 As Long
Dim i As Long
最終行 = Cells(Rows.Count, 1).End(xlUp).Row
For i = 最終行 To 1 Step -1
Rows(i).Insert
Next i
解説が必要ないという方はこのコードをコピーして使ってください!
行の挿入(Insertメソッド)
Dim 最終行 As Long
Dim i As Long
最終行 = Cells(Rows.Count, 1).End(xlUp).Row
For i = 最終行 To 1 Step -1
Rows(i).Insert
Next i
行を挿入する時は「Insertメソッド」を使います。
Rows(3).Insert
通常はこのように、行数を選択することによって行を挿入します。(この場合は3行目)
しかし、今回の場合では処理を繰り返したいので1行目や2行目といった決まったところに挿入されるわけではありません。
こんな場合は変数を使って指定しましょう!
次は今回使った変数について解説します!
変数を定義する
Dim 最終行 As Long
Dim i As Long
最終行 = Cells(Rows.Count, 1).End(xlUp).Row
For i = 最終行 To 1 Step -1
Rows(i).Insert
Next i
今回は2つの変数を定義しました。
1つ目は「繰り返し処理」をするための変数「i」です。
「繰り返し処理」をする変数は整数型を使用しますので、一般的に「i」を使うことが多いです。
2つ目の関数は最終行を取得するために使う変数です。
今回はわかりやすいように「最終行」という変数名にしました。
変数名はなんでも大丈夫ですが、後で見た時に自分のわかりやすい名前にしておきましょう。
筆者は後で見返した時にわかりやすいので日本語で書くことも多いです!
場面に応じて使い分けていきましょう!
最終行の取得
Dim 最終行 As Long
Dim i As Long
最終行 = Cells(Rows.Count, 1).End(xlUp).Row
For i = 最終行 To 1 Step -1
Rows(i).Insert
Next i
次に最終行を取得します。
最終行を取得しておくことで、次に解説する「繰り返し処理」の終了を指定することができます!
今回使用する方法は最も下の行から順に文字が入力されている行を探していき、その行が何行目なのかを取得するやりかたです。
繰り返し処理
最後に「For文」を使って処理を繰り返していきます。
For カウンタ変数 = 初期値 To 終了値
繰り返し処理
Next カウンタ変数
この形が基本的な構文です!暗記する必要はありませんがよく使う構文なので頭の片隅に置いておきましょう!
Dim 最終行 As Long
Dim i As Long
最終行 = Cells(Rows.Count, 1).End(xlUp).Row
For i = 最終行 To 1 Step -1
Rows(i).Insert
Next i
これで「最終行」から1行ずつ順に行の挿入を繰り返すことができます。
最終的に1番上の行まできたら「繰り返し処理」は終了します。
まとめ
今回は1行置きに行を挿入する方法を解説しました。
やりたいことをするにはどのような処理が必要かを考えることがVBAの学習には大事になってきます。
根気強く学んでいきましょう!
この記事で少しでもみなさんのお役に立てると幸いです。
ありがとうございました!
コメントはお気軽に!
コメント一覧 (2件)
ルウちゃん様
こんにちは。以前写真の整列で質問させて頂いた岳と申します。
その節は大変お世話になりました。
今回は行の追加でお聞きしたいのですが宜しいでしょうか。
例えばA~J列まで3行表があったとします。
(A18~J20)A列にはNO.1,2,3と記入していて、基本の3行では足りず、
行をNO.4,5,6・・・と1行ずつ追加していくボタンを作成したいのですが、
その場合どうすればよいでしょうか?
(数式等も上段と同じくしたい。)
また併せてなのですが、下段の方にこの表の計算式が入っているセルも
行が挿入されたことによって、ずれない(追加行分も計算する)ように
したいのですが、可能でしょうか?
とても困っておりご教示頂きたくお願います。
宜しくお願い致します。
岳様
コメントありがとうございます。
なんとなく状況は把握できました。
もし可能でしたらメールで様式を送っていただけると助かります。
お待ちしております。