「excel 2013 vba テーブルの行を削除」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
テーブル・ListObjectオブジェクトの、行を削除するVBA(Visual Basic for Applications)のコードを探している方による検索です。
参考になりそうな簡単なマクロを3つご紹介しておきましょう。
テーブルの先頭行・1行目を削除するサンプルマクロ
一つ目は、アクティブなシートの、一個目のテーブル・ListObjectオブジェクトの、1行目を削除するマクロです。
ActiveSheet.ListObjects(1).ListRows(1).Delete
End Sub
ListRowsコレクションオブジェクトの、_Defaultプロパティの引数に行番号を指定すると、テーブルの行を表すListRowオブジェクトを取得できます。
ここでは引数に「1」を指定することで、テーブルの1行目を表すListRowオブジェクトを取得して、取得したListRowオブジェクトのDeleteメソッドで、行を削除しています。
テーブルの最終行を削除するサンプルマクロ
二つ目は、最後の行・最終行を削除するマクロです。
With ActiveSheet.ListObjects(1).ListRows
.Item(.Count).Delete
End With
End Sub
ListRows.Countプロパティで、テーブルの行数を取得できます。
その値をListRows.Itemプロパティの引数に指定することで、最後の行を表すListRowオブジェクトを取得して、Deleteメソッドで削除しています。
コレクションオブジェクトオブジェクトから、そのメンバーである単一オブジェクトを取得する方法について理解が曖昧な方の場合は、以下のようなマクロのほうがわかりやすいでしょう。
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・テーブルの行を削除する