Excelのテーブル(ListObject)は、構造化された表として非常に便利ですが、VBAからレコード(行)を追加する方法を理解しておくと、入力作業の自動化に大いに役立ちます。
本記事では、VBAを使ってテーブルに「次のレコード」を追加する方法とその具体的なコード例を解説いたします。
想定される活用シーン
- データ入力フォームから新しい情報をテーブルに追加したい。
- 外部ファイルやユーザー入力から取得したデータを、既存のテーブル構造に沿って登録したい。
- テーブルの最後に常に新しいデータを付け加えたい。
基本構文:テーブルに新しいレコードを追加
以下のコードは、「会員データ」というテーブルの最下行に1行追加する基本的な処理です。
Sub AddNewRecord()
Dim tbl As ListObject
Set tbl = ActiveSheet.ListObjects("会員データ")
' 次のレコードを追加(末尾)
tbl.ListRows.Add
End Sub
応用:特定位置に行を挿入
2行目に新しいレコードを挿入したい場合は、次のように指定します。
tbl.ListRows.Add 2
※ 既存行の前に挿入されるため、挿入後に行番号がずれる点に注意が必要です。
データを設定して追加する
追加した行に対して、具体的なデータを設定することも可能です。
Sub AddRecordWithData()
Dim tbl As ListObject
Dim newRow As ListRow
Set tbl = ActiveSheet.ListObjects("会員データ")
' レコード追加と同時に取得
Set newRow = tbl.ListRows.Add
' 値を配列で一括設定(列順に注意)
newRow.Range.Value = Array("M1001", "森 太郎", #1/1/2020#)
End Sub
注意点
| 項目 | 解説 |
|---|---|
.ListRows.Add | テーブルの最下行に空白行を追加します。 |
.ListRows.Add(position) | 任意の位置に挿入も可能です。 |
.Range.Value = Array(...) | 追加した行に一括でデータを入力できます。 |
| 日付形式 | #1/1/2020# のように、VBAで扱える日付型で入力する必要があります。 |
まとめ
VBAを使えば、Excelテーブルへのレコード追加も非常に簡単に実装できます。ListRows.Add メソッドを活用することで、ユーザー操作なしにデータを動的に登録でき、業務効率化やフォーム自動化にもつながります。
ルーチン処理の自動化や入力ミスの防止にも有効ですので、ぜひ本記事の方法を取り入れてみてください。
技術書の購入コストを抑えてスキルアップするなら

ここまで読んでいただきありがとうございます。最後に宣伝をさせてください。
プログラミングの技術書や参考書は、1冊3,000円〜5,000円するものも多く、出費がかさみがちです。Kindle Unlimitedであれば、月額980円で500万冊以上の書籍が読み放題となります。
気になる言語の入門書から、アルゴリズム、基本設計の専門書まで、手元のスマホやPCですぐに参照可能です。現在は「30日間の無料体験」や、対象者限定の「3か月499円プラン」なども実施されています。まずはご自身のアカウントでどのようなオファーが表示されるか確認してみてください。
