Excel VBAでテーブルのデータをレコード単位で操作する方法|ListRowの活用法

Excelのテーブル(ListObject)をVBAで扱う際、1行ずつ(レコード単位)で取得・編集・削除したい場面は多々あります。
VBAでは、ListRows(行番号) を使って、特定のレコードを簡単に操作することができます。

本記事では、テーブルの行(ListRow)を個別に取得・選択・削除する方法をご紹介いたします。


目次

想定される活用シーン

  • 2行目のデータだけを選択して確認したい。
  • 特定の条件に一致した行だけを削除したい。
  • 行単位でループ処理を行いたい。

VBAコードの例

特定のレコードを取得・選択する

Sub SelectTableRecord()

    Dim tbl As ListObject
    Dim myRow As ListRow

    Set tbl = ActiveSheet.ListObjects("顧客一覧")
    Set myRow = tbl.ListRows(2) ' 2行目(データ部)を指定

    ' 該当レコードを選択
    myRow.Range.Select

End Sub

特定のレコードを削除する

Sub DeleteTableRecord()

    Dim tbl As ListObject
    Set tbl = ActiveSheet.ListObjects("顧客一覧")

    ' 2行目のレコードを削除
    tbl.ListRows(2).Delete

End Sub

ListRowとは?

ListRowは、テーブルの「1レコード(1行)」を表すオブジェクトです。
このオブジェクトを使うことで、テーブル内の任意の行を選択・編集・削除・値取得など、柔軟に制御できます。


注意点

項目内容
インデックスは1から.ListRows(1) は、テーブルの1行目のデータを指します(見出しは含まない)。
行数が足りないとエラー存在しない行番号を指定すると実行時エラーになります。必ず .ListRows.Count で上限チェックを行いましょう。
.Range.Value で値の取得・設定も可能行全体の値を一括で取得または上書きできます。

応用例:すべてのレコードをループ処理

Dim tbl As ListObject
Dim r As ListRow

Set tbl = ActiveSheet.ListObjects("顧客一覧")

For Each r In tbl.ListRows
    If r.Range.Cells(1, 2).Value = "森" Then
        MsgBox "森さんのデータがあります"
    End If
Next

まとめ

Excel VBAでは、テーブルの行(ListRow)を使って、レコード単位で柔軟にデータ処理が可能です。
特定の行だけを処理したり、条件に合う行を操作したりと、実務的なニーズにしっかり対応できます。

業務の効率化や入力ミス防止にも直結するため、ぜひ本記事の方法をご活用ください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次