Excelのテーブル(ListObject)をVBAで操作する際に、よく使うのが「新しい行を追加する処理」です。特に、データを蓄積する用途では「テーブルの最後に1行追加して新しいデータを挿入する」ことが頻繁に求められます。ここでは、ListRows.Add メソッドを使って、テーブルの末尾にデータを追加する方法を詳しく解説します。
目次
1. ListRows.Add とは?
テーブル(ListObject)には「行(ListRow)」の集合を表す ListRows プロパティがあります。
この ListRows.Add メソッドを使うことで、テーブルの最後に新しい行を1行追加することが可能です。
つまり、毎回「最終行を探して次の行にデータを書き込む」ような処理をしなくても、テーブル構造を利用して簡単に追加できます。
2. 基本構文
ListObject.ListRows.Add
- ListObject … 操作対象となるテーブル(ListObjectオブジェクト)
- ListRows.Add … 末尾に新しい行を追加するメソッド
このコードを実行すると、テーブルの最後に空行が1行追加されます。
3. サンプルコード(テーブル末尾に1行追加して値を入力)
次の例では、シート「Sheet1」にあるテーブル「Table1」に新しい行を追加し、その行にデータを入力します。
Sub テーブル行追加_サンプル()
Dim ws As Worksheet
Dim lo As ListObject
Dim newRow As ListRow
Set ws = ThisWorkbook.Sheets("Sheet1")
Set lo = ws.ListObjects("Table1")
'新しい行を追加
Set newRow = lo.ListRows.Add
'追加した行のセルに値を入力
newRow.Range(1, 1).Value = "商品A" '1列目に「商品A」
newRow.Range(1, 2).Value = 100 '2列目に「100」
newRow.Range(1, 3).Value = Date '3列目に本日の日付
End Sub
ポイント解説
Set newRow = lo.ListRows.Add
→ 新しい行を追加し、その行をnewRow
という変数に格納しています。newRow.Range(1, 1)
は「追加した行の1列目のセル」を表します。(行番号, 列番号)
の形でセルを指定できます。
4. 行を追加したあとの動作イメージ
たとえば「Table1」が次のような状態だったとします。
商品名 | 数量 | 日付 |
---|---|---|
商品X | 10 | 2025/10/01 |
商品Y | 20 | 2025/10/02 |
このとき上記のコードを実行すると、最後に1行追加され、次のようになります。
商品名 | 数量 | 日付 |
---|---|---|
商品X | 10 | 2025/10/01 |
商品Y | 20 | 2025/10/02 |
商品A | 100 | 2025/10/02 |
5. ListRows.Add の注意点
- 追加先は必ず末尾
ListRows.Add
は常に最後に追加されます。途中の行に挿入する場合は、次の「任意の位置に行を追加する方法」を使います。 - テーブルがフィルタリング中でも追加可能
フィルタがかかっていても、内部的には最後の行に新しいデータが追加されます。 - 書式・数式は自動的に引き継がれる
テーブルの列に数式や条件付き書式が設定されている場合、新しい行にも自動的に反映されるため便利です。
6. まとめ
- ListRows.Add を使うと、テーブルの最後に簡単に新しい行を追加できる
- 追加した行は ListRow オブジェクトとして扱えるため、セルに値を代入するのも容易
- データベース的にデータを蓄積する処理で非常に便利
コメント