Home » エクセルマクロ・Excel VBAの使い方 » ListObjectオブジェクト » VBAでListObject・テーブルの行を削除する

VBAでListObject・テーブルの行を削除する

対象:Excel2007, Excel2010, Excel2013

「excel 2013 vba テーブルの行を削除」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

テーブル・ListObjectオブジェクトの、行を削除するVBA(Visual Basic for Applications)のコードを探している方による検索です。

参考になりそうな簡単なマクロを3つご紹介しておきましょう。

[スポンサードリンク]

テーブルの先頭行・1行目を削除するサンプルマクロ

一つ目は、アクティブなシートの、一個目のテーブル・ListObjectオブジェクトの、1行目を削除するマクロです。

Sub テーブルの先頭行を削除する()
 ActiveSheet.ListObjects(1).ListRows(1).Delete
End Sub

ListRowsコレクションオブジェクトの、_Defaultプロパティの引数に行番号を指定すると、テーブルの行を表すListRowオブジェクトを取得できます。

ListObject・テーブルの行を削除するExcel VBAのサンプル

ここでは引数に「1」を指定することで、テーブルの1行目を表すListRowオブジェクトを取得して、取得したListRowオブジェクトのDeleteメソッドで、行を削除しています。

ListObject・テーブルの行を削除するExcel VBAのサンプル

テーブルの最終行を削除するサンプルマクロ

二つ目は、最後の行・最終行を削除するマクロです。

Sub テーブルの最終行を削除する()
 With ActiveSheet.ListObjects(1).ListRows
  .Item(.Count).Delete
 End With
End Sub

ListRows.Countプロパティで、テーブルの行数を取得できます。

ListObject・テーブルの行を削除するExcel VBAのサンプル

その値をListRows.Itemプロパティの引数に指定することで、最後の行を表すListRowオブジェクトを取得して、Deleteメソッドで削除しています。

コレクションオブジェクトオブジェクトから、そのメンバーである単一オブジェクトを取得する方法について理解が曖昧な方の場合は、以下のようなマクロのほうがわかりやすいでしょう。

Sub テーブルの最終行を削除する_変数利用()
 Dim lst As ListObject
 Dim cnt As Long

 Set lst = ActiveSheet.ListObjects(1)
 cnt = lst.ListRows.Count
 lst.ListRows(cnt).Delete
End Sub

先の、
 With ActiveSheet.ListObjects(1).ListRows
  .Item(.Count).Delete
 End With
というコードと、やっていることは同じですが、処理をバラしています。

オブジェクト変数・lstに、アクティブなシートの一つ目のListObjectを格納して、
 Set lst = ActiveSheet.ListObjects(1)

行数をListRowsコレクションオブジェクトのCountプロパティで取得して、変数・cntに代入して、
 cnt = lst.ListRows.Count

変数・cntをListRowsコレクションオブジェクトの_Defaultプロパティに指定することで最終行を取得して、Deleteメソッドで削除しています。
 lst.ListRows(cnt).Delete

最終更新日時:2019-08-02 07:58

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » ListObjectオブジェクト » VBAでListObject・テーブルの行を削除する

「ListObjectオブジェクト」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.