もくじ
ワークシートでもVBAでもテーブルは便利(^o^)
前回次の記事で、VBAでテーブルを扱うときに使用するListObjectで、テーブルやいろいろな部位を捕まえる方法を紹介しました。
今回は、その捕まえたテーブルのデータを操作する方法を紹介しいます(^o^)
サンプルデータとして、以下のテーブルがあることを前提とします。

オートフィルター
まずは、オートフィルターです。
テーブルの実データを指定して、そこに対して”.AutoFilter”を実行します。
Sub sample()
'シートの指定
Dim シート As Worksheet
Set シート = ActiveSheet
'テーブルの指定
Dim テーブル As ListObject
Set テーブル = シート.ListObjects("テーブル1")
'テーブルの実データの指定
Dim テーブルのデータ As Range
Set テーブルのデータ = テーブル.Range
'オートフィルターの設定
テーブルのデータ.AutoFilter 3, "男"
End Sub
このコードを実行すると、テーブルにフィルターが掛けられて絞り込まれることが分かります。

'テーブルの実データの指定
Dim テーブルのデータ As Range
Set テーブルのデータ = テーブル.Range
実データの指定には、見出し含むテーブルデータ全体を指定する”.Range”を使いましたが”.DataBodyRange”でも結果は同じになります。
'テーブルの実データの指定
Dim テーブルのデータ As Range
Set テーブルのデータ = テーブル.DataBodyRange ’ここ変えても同じ
コピーと貼り付け
フィルターで絞り込んだ状態のテーブルのデータをコピーして、別のところに貼り付けるには、フィルターで絞り込んだ後に".Range" あるいは ".DataBodyRange" に対して、Copyメソッドを実行します。
.Rangeに対して行うと、見出しを含むデータがコピーされます。.DataBodyRangeに対して実行すると、見出しを含まないデータだけがコピーされます。
Sub sample()
'シートの指定
Dim シート As Worksheet
Set シート = ActiveSheet
'テーブルの指定
Dim テーブル As ListObject
Set テーブル = シート.ListObjects("テーブル1")
'テーブルの実データの指定
Dim テーブルのデータ As Range
Set テーブルのデータ = テーブル.DataBodyRange
'オートフィルターの設定
テーブルのデータ.AutoFilter 3, "男"
'フィルターを掛けたデータをコピペ(見出し含むデータ)
テーブル.Range.Copy シート.Range("A19")
End Sub

見出し含まないデータだけをコピペする場合”.DataBodyRange”
Sub sample()
'シートの指定
Dim シート As Worksheet
Set シート = ActiveSheet
'テーブルの指定
Dim テーブル As ListObject
Set テーブル = シート.ListObjects("テーブル1")
'テーブルの実データの指定
Dim テーブルのデータ As Range
Set テーブルのデータ = テーブル.DataBodyRange
'オートフィルターの設定
テーブルのデータ.AutoFilter 3, "男"
'フィルターを掛けたデータをコピペ(見出し含まないデータ)
テーブル.DataBodyRange.Copy シート.Range("A19")
End Sub

ここではテーブルの指定方法は、ListObjectを使用しましたが、もちろん構造化参照でも同じことが出来ます。
※注意
このプログラム実行時、アクティブセルがテーブルの外側にあると絞り込まれた状態ではなく、テーブルの全てのデータがコピペされてしまいます。不具合みたいですが注意してください。
失敗バージョンも動画でどうぞ。コードは同じです。
特定の列だけ取り出すことも出来ます。
その場合、最後のコピーメソッドを".ListColumns("列名")"などテーブルの指定の際に、列だけにしておきましょう。
Sub sample()
'シートの指定
Dim シート As Worksheet
Set シート = ActiveSheet
'テーブルの指定
Dim テーブル As ListObject
Set テーブル = シート.ListObjects("テーブル1")
'テーブルの実データの指定
Dim テーブルのデータ As Range
Set テーブルのデータ = テーブル.DataBodyRange
'オートフィルターの設定
テーブルのデータ.AutoFilter 3, "男"
'フィルターを掛けたデータをコピペ(見出し含む名前列)
テーブル.ListColumns("名前").Range.Copy シート.Range("A19")
End Sub

もちろん、
テーブル.ListColumns("名前").Range.Copy シート.Range("A19")
を
テーブル.ListColumns("名前").DataBodyRange.Copy シート.Range("A19")
にすれば、見出し無しのデータになります。
そして、
”テーブル.ListColumns("名前").DataBodyRange”に対しては書式の設定などもすることが出来ますね。
行の削除
行を削除する場合は、".DataBodyRange"の".EntireRow"を".Delete"すると実現出来ます。
全ての行を削除する
見出しだけ残して、全ての行を削除したい場合は次のようになります。
Sub sample()
'シートの指定
Dim シート As Worksheet
Set シート = ActiveSheet
'テーブルの指定
Dim テーブル As ListObject
Set テーブル = シート.ListObjects("テーブル1")
'テーブルの実データの指定
Dim テーブルのデータ As Range
Set テーブルのデータ = テーブル.DataBodyRange
'見出し以外の全ての行を削除する
テーブルのデータ.EntireRow.Delete
End Sub
特定の行だけ削除する
特定の行だけ削除したい場合は、先にフィルターで絞っておきましょう。
Sub sample()
'シートの指定
Dim シート As Worksheet
Set シート = ActiveSheet
'テーブルの指定
Dim テーブル As ListObject
Set テーブル = シート.ListObjects("テーブル1")
'テーブルの実データの指定
Dim テーブルのデータ As Range
Set テーブルのデータ = テーブル.DataBodyRange
'性別が”男”のデータを削除
With テーブルのデータ
.AutoFilter 3, "男"
.EntireRow.Delete
.AutoFilter 3
End With
End Sub

列の挿入
最後に列の挿入です。
列を挿入するには、ListColumnsコレクションのAddメソッドを使用します。
ListColumnsコレクションを指定して、”.Add”するだけです。
何もしないとテーブルの一番右側に挿入されます。
引数で、挿入位置を指定することも出来ます。
Sub sample()
'シートの指定
Dim シート As Worksheet
Set シート = ActiveSheet
'テーブルの指定
Dim テーブル As ListObject
Set テーブル = シート.ListObjects("テーブル1")
'列の指定(コレクション)
Dim 列 As ListColumns 'コレクションなので複数系
Set 列 = テーブル.ListColumns
'列を挿入(一番右)
列.Add
'列を挿入(左から3番目)
列.Add 3
End Sub

【EXCEL VBA | ListColumns.Add】テーブルに新しい列(データ)を追加する
もくじ テーブルに新しい列(データ)を追加するテーブルに新しい列を追加する追加した列に列名を付ける追加した列にデータを入れる テーブルに新しい列(データ)を追加する テーブル形式のリストにデータを追加する方法を紹介します続きを読む
【EXCEL VBA | ListRows.Add】テーブルに新しい行(データ)を追加する
もくじ テーブルに新しい行(データ)を追加するテーブルに空行を追加する追加した行にデータを入力する テーブルに新しい行(データ)を追加する テーブル形式のリストにデータを追加する方法を紹介します! テーブル テーブルって続きを読む
【EXCEL VBA | ListObject】シートの範囲をテーブル形式に変換する
ワークシートでもVBAでもテーブルは便利(^o^) ワースシート上でもお馴染みのテーブル形式の表をVBAで作成する方法を紹介します! テーブル テーブルってこんなやつです。 ワークシート上にある表の中に、アクティブセルを続きを読む
【EXCEL VBA | ListObject】ワークシートでもVBAでもテーブルは便利(^o^) その1
もくじ ワークシートでもVBAでもテーブルは便利(^o^)ListObject(リストオブジェクト)テーブルを捕まえるテーブル内のデータを取得する(見出し・データ・行・列)構造化参照を使ってテーブルを指定するまとめ ワー続きを読む