Excel VBA 逆引き集 | 動的行追加

Excel VBA
スポンサーリンク

動的行追加の基本

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で 新しいデータを追加するたびに自動で行を増やす処理 を簡単に実装できます。

タイトルとURLをコピーしました