ListRows item

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

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

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

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

ListRows item

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

ListRows item

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

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

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

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

ListRows item

その値を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