動的行追加の基本
Excel VBAで「データを追加するときに自動で行を増やしたい」「ボタンを押すと新しい行を作りたい」といった場面では 動的行追加 の処理が役立ちます。
初心者向けに、コード例やテンプレートをかみ砕いて説明します。
基本の考え方
- 行を追加する方法:
Rows.Insert→ 指定した場所に新しい行を挿入Cells(Rows.Count, 列).End(xlUp)→ 最終行を取得して、その下に追加
- 用途:
- データ入力フォームから新しい行を追加
- ボタンを押すと新しい行を作成
- 最終行に追記していく
テンプレ1:最終行の下に新しい行を追加
Sub AddRowAtEnd()
Dim ws As Worksheet: Set ws = Worksheets("Data")
Dim lastRow As Long
' A列の最終行を取得
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
' 最終行の下に新しい行を挿入
ws.Rows(lastRow + 1).Insert
ws.Cells(lastRow + 1, 1).Value = "新しいデータ"
End Sub
VB- ポイント:
End(xlUp)で最終行を取得。Rows(lastRow + 1).Insertで新しい行を追加。
テンプレ2:ボタンを押すと新しい行を追加
UserFormに CommandButton1 を配置。
Private Sub CommandButton1_Click()
Dim ws As Worksheet: Set ws = Worksheets("Data")
Dim lastRow As Long
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
ws.Rows(lastRow + 1).Insert
ws.Cells(lastRow + 1, 1).Value = TextBox1.Value
ws.Cells(lastRow + 1, 2).Value = TextBox2.Value
End Sub
VB- ポイント:
- ボタンを押すと新しい行が追加される。
- TextBoxの入力値を新しい行に書き込む。
テンプレ3:選択した行の下に新しい行を追加
Sub AddRowBelowSelection()
Dim ws As Worksheet: Set ws = Worksheets("Data")
Dim selRow As Long
selRow = Selection.Row
ws.Rows(selRow + 1).Insert
ws.Cells(selRow + 1, 1).Value = "追加データ"
End Sub
VB- ポイント:
- 選択中の行の下に新しい行を追加。
- 直感的に操作できる。
テンプレ4:複数行をまとめて追加
Sub AddMultipleRows()
Dim ws As Worksheet: Set ws = Worksheets("Data")
Dim lastRow As Long
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
' 最終行の下に3行追加
ws.Rows(lastRow + 1 & ":" & lastRow + 3).Insert
End Sub
VB- ポイント:
Rows("n:m").Insertで複数行を一度に追加。
テンプレ5:データ入力と同時に行追加(動的テーブル)
Sub AddRowWithData()
Dim ws As Worksheet: Set ws = Worksheets("Data")
Dim lastRow As Long
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
' 新しい行を追加してデータを入力
ws.Rows(lastRow + 1).Insert
ws.Cells(lastRow + 1, 1).Value = "ID-" & lastRow + 1
ws.Cells(lastRow + 1, 2).Value = Date
ws.Cells(lastRow + 1, 3).Value = "新規登録"
End Sub
VB- ポイント:
- 行追加と同時に初期値を入力。
- データベース的な使い方ができる。
例題で練習
'例1:最終行の下に新しい行を追加
Sub Example1()
AddRowAtEnd
End Sub
'例2:ボタンを押すと新しい行を追加
' → CommandButton1_Click にコードを記述
'例3:選択した行の下に新しい行を追加
Sub Example3()
AddRowBelowSelection
End Sub
'例4:複数行をまとめて追加
Sub Example4()
AddMultipleRows
End Sub
'例5:データ入力と同時に行追加
Sub Example5()
AddRowWithData
End Sub
VB初心者向けポイント
- 最終行を取得するのが基本 →
Cells(Rows.Count, "A").End(xlUp).Row。 - Insertで行追加 →
Rows(n).Insert。 - 複数行も追加可能 →
Rows("n:m").Insert。 - UserFormと組み合わせると便利 → 入力フォームから行追加できる。
- データベース的に使える → IDや日付を自動入力して管理。
👉 この「動的行追加テンプレ」を覚えておけば、Excel VBAで 新しいデータを追加するたびに自動で行を増やす処理 を簡単に実装できます。
