スポンサーリンク

【VBA】テーブルの最後にデータを1行追加する方法(ListRows.Add)

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」が次のような状態だったとします。

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

このとき上記のコードを実行すると、最後に1行追加され、次のようになります。

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

5. ListRows.Add の注意点

  1. 追加先は必ず末尾
    ListRows.Add は常に最後に追加されます。途中の行に挿入する場合は、次の「任意の位置に行を追加する方法」を使います。
  2. テーブルがフィルタリング中でも追加可能
    フィルタがかかっていても、内部的には最後の行に新しいデータが追加されます。
  3. 書式・数式は自動的に引き継がれる
    テーブルの列に数式や条件付き書式が設定されている場合、新しい行にも自動的に反映されるため便利です。

6. まとめ

  • ListRows.Add を使うと、テーブルの最後に簡単に新しい行を追加できる
  • 追加した行は ListRow オブジェクトとして扱えるため、セルに値を代入するのも容易
  • データベース的にデータを蓄積する処理で非常に便利

コメント

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