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
処理の流れ
lo.ListRows.Add(2)
→ 2行目に新しい行を追加- 既存の2行目以降のデータは、1行下にずれてシフトされる
newRow.Range(1, x)
で新しく追加された行にデータを入力
3. 実行前後のイメージ
実行前(Table1)
商品名 | 数量 | 日付 |
---|---|---|
商品X | 10 | 2025/10/01 |
商品Y | 20 | 2025/10/02 |
実行後(2行目に挿入)
商品名 | 数量 | 日付 |
---|---|---|
商品X | 10 | 2025/10/01 |
商品B | 200 | 2025/10/02 |
商品Y | 20 | 2025/10/02 |
4. 任意の位置に行を追加する際の注意点
- 行番号はデータ部分の行を基準とする
ListRows.Add(1)
は最初のデータ行の前に追加されます。
ヘッダー行は含まれないので注意してください。 - 末尾に追加する場合は省略可能
引数を指定しなくても最後に追加されます。 - フィルタリングされていても挿入可能
非表示の行があっても内部的に正しい位置に挿入されます。
5. まとめ
- ListRows.Add(Position) を使うと、任意の位置に新しい行を挿入できる
Position
を指定しなければ末尾に追加、指定すればその行の前に追加される- 既存データが下にシフトされるため、途中にデータを差し込む処理に便利
コメント