スポンサーリンク

【VBA】テーブルの任意の位置に行を追加する方法(ListRows.Add 引数)

Excel VBAでテーブル(ListObject)を操作するとき、よく使うのが「新しい行を追加する処理」です。
ListRows.Add を使ってテーブルの最後に行を追加する方法がありますが、実は 任意の位置(途中の行)にも追加可能 です。

ここでは、ListRows.Add メソッドの引数を活用して「途中の行に挿入する方法」を解説します。


スポンサーリンク

1. ListRows.Add の構文

ListRows.Add にはオプション引数を指定することで、追加する行の位置を制御できます。

ListObject.ListRows.Add(Position)
  • Position(省略可)
    行を挿入する位置を指定します。
    • 省略時 → テーブルの最後に追加
    • 数値指定 → 指定した行番号の前に追加される

スポンサーリンク

2. サンプルコード(途中に行を追加)

次の例では、シート「Sheet1」のテーブル「Table1」の2行目に新しい行を挿入します。

Sub テーブル行追加_途中()
    Dim ws As Worksheet
    Dim lo As ListObject
    Dim newRow As ListRow
    
    Set ws = ThisWorkbook.Sheets("Sheet1")
    Set lo = ws.ListObjects("Table1")
    
    '2行目に新しい行を挿入
    Set newRow = lo.ListRows.Add(2)
    
    '追加した行にデータを入力
    newRow.Range(1, 1).Value = "商品B"   '1列目
    newRow.Range(1, 2).Value = 200       '2列目
    newRow.Range(1, 3).Value = Date      '3列目
End Sub

処理の流れ

  1. lo.ListRows.Add(2) → 2行目に新しい行を追加
  2. 既存の2行目以降のデータは、1行下にずれてシフトされる
  3. newRow.Range(1, x) で新しく追加された行にデータを入力

スポンサーリンク

3. 実行前後のイメージ

実行前(Table1)

商品名数量日付
商品X102025/10/01
商品Y202025/10/02

実行後(2行目に挿入)

商品名数量日付
商品X102025/10/01
商品B2002025/10/02
商品Y202025/10/02

スポンサーリンク

4. 任意の位置に行を追加する際の注意点

  1. 行番号はデータ部分の行を基準とする
    ListRows.Add(1) は最初のデータ行の前に追加されます。
    ヘッダー行は含まれないので注意してください。
  2. 末尾に追加する場合は省略可能
    引数を指定しなくても最後に追加されます。
  3. フィルタリングされていても挿入可能
    非表示の行があっても内部的に正しい位置に挿入されます。

5. まとめ

  • ListRows.Add(Position) を使うと、任意の位置に新しい行を挿入できる
  • Position を指定しなければ末尾に追加、指定すればその行の前に追加される
  • 既存データが下にシフトされるため、途中にデータを差し込む処理に便利

コメント

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