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)を使って、レコード単位で柔軟にデータ処理が可能です。
特定の行だけを処理したり、条件に合う行を操作したりと、実務的なニーズにしっかり対応できます。
業務の効率化や入力ミス防止にも直結するため、ぜひ本記事の方法をご活用ください。