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
メソッドを活用することで、ユーザー操作なしにデータを動的に登録でき、業務効率化やフォーム自動化にもつながります。
ルーチン処理の自動化や入力ミスの防止にも有効ですので、ぜひ本記事の方法を取り入れてみてください。