Sub TEST1()
'見出しを含めてテーブルをコピー
ActiveSheet.ListObjects("テーブル1").Range.Copy Range("F2")
End Sub
「構造化参照」で、テーブルをコピーする場合は、次のようになります。
Sub TEST2()
'見出しを含めてテーブルをコピー
Range("テーブル1[#ALL]").Copy Range("F2")
End Sub
実行すると、テーブルをコピーできます。
テーブルをコピーできた
テーブルをコピーできました。
データの範囲をコピー
次は、「データの範囲」をコピーしてみます。
テーブルのデータ範囲をコピーしたい
テーブルのデータ範囲をコピーするVBAコードは、次のようになります。
データの範囲をコピー
「ListObjects」を使った場合は、次のようになります。
Sub TEST3()
'データの範囲をコピー
ActiveSheet.ListObjects("テーブル1").DataBodyRange.Copy Range("F3")
End Sub
「構造化参照」を使う場合は、次のようになります。
Sub TEST4()
'データの範囲をコピー
Range("テーブル1").Copy Range("F3")
End Sub
実行すると、テーブルのデータ範囲をコピーできます。
テーブルのデータ範囲をコピーできた
テーブルのデータ範囲をコピーできました。
テーブルを行、列単位でコピーする
次は、テーブルを行もしくは列単位でコピーしてみます。
2行目をコピー
テーブルの2行目をコピーしてみます。
テーブルの2行目をコピーしたい
テーブルの2行目をコピーするVBAコードは、次のようになります。
2行目をコピー
「ListObjects」を使う場合は、次のようなります。
Sub TEST5()
'「2」行目をコピー
ActiveSheet.ListObjects("テーブル1").ListRows(2).Range.Copy Range("F3")
End Sub
「構造化参照」を使う場合は、つぎのようになります。
Sub TEST6()
'「2」行目をコピー
Range("テーブル1").Rows(2).Copy Range("F3")
End Sub
実行すると、テーブルの2行目をコピーできます。
テーブルの2行目をコピーできた
テーブルの2行目をコピーできました。
1列目をコピー
次は、テーブルの1列目をコピーしてみます。
1列目をコピーしたい
テーブルの1列目をコピーするVBAコードは、次のようになります。
1列目をコピー
「ListObjects」を使う場合は、次のようになります。
Sub TEST7()
'「1」列目をコピー
ActiveSheet.ListObjects("テーブル1").ListColumns(1).Range.Copy Range("F2")
'もしくは
ActiveSheet.ListObjects("テーブル1").ListColumns("名前").Range.Copy Range("F2")
End Sub
「構造化参照」を使う場合は、次のようなります。
Sub TEST8()
'「1」列目をコピー
Range("テーブル1[[#ALL],[名前]]").Copy Range("F2")
End Sub
実行すると、テーブルの1列目をコピーできます。
テーブルの1列目をコピーできた
テーブルの1列目をコピーできました。
1列目のデータ範囲をコピー
つぎは、1列目のデータ範囲をコピーしてみます。
1列目のデータ範囲をコピーしたい
1列目のデータ範囲をコピーするVBAコードは、次のようになります。
1列目のデータ範囲をコピー
「ListObjects」を使う場合は、次のようになります。
Sub TEST9()
'「1」列目のデータ範囲をコピー
ActiveSheet.ListObjects("テーブル1").ListColumns(1).DataBodyRange.Copy Range("F3")
'もしくは
ActiveSheet.ListObjects("テーブル1").ListColumns("名前").DataBodyRange.Copy Range("F3")
End Sub
「構造化参照」を使う場合は、次のようになります。
Sub TEST10()
'「1」列目のデータ範囲をコピー
Range("テーブル1[名前]").Copy Range("F3")
End Sub
Sub TEST11()
With ActiveSheet.ListObjects("テーブル1").Range
.AutoFilter 1, "A" '「1」列目を、「"A"」でフィルタ
.SpecialCells(xlCellTypeVisible).Copy Range("F2") '表示セルのみコピー
.AutoFilter 1 'フィルタを解除
End With
End Sub
では、実行してみます。
手順
テーブルの1列目を、「"A"」でフィルタします。
表示セルのみをコピーします。
テーブルのフィルタを解除します。
これで、テーブルで、1列目が「"A"」の行のみをコピーできます。
「"A"」のみをコピーできた
テーブルで、1列目が「"A"」の行のみをコピーできました。
テーブルを書式なしでコピーする
次は、テーブルを「書式なし」でコピーする、といのをやってみます。
「書式なし」でデータ範囲をコピー
やりたい内容は、「書式なし」で、データ範囲をコピーする、ということになります。
「書式なし」で、データ範囲をコピーしたい
手順は、次のようになります。
テーブルのスタイルを保存
テーブルのスタイルを削除
テーブルのデータ範囲をコピーする
テーブルのスタイルを戻す
VBAコードは、次のようになります。
Sub TEST12()
Dim A
'書式なしで、データ範囲をコピー
With ActiveSheet.ListObjects("テーブル1")
A = .TableStyle 'テーブルのスタイルを保存
.TableStyle = "" 'テーブルスタイルを削除
.DataBodyRange.Copy Range("F3") 'テーブルのデータ範囲をコピー
.TableStyle = A 'テーブルスタイルを戻す
End With
End Sub
では、実行してみます。
「書式なし」で、データ範囲をコピーする
テーブルのスタイルを保存しておきます。
テーブルのスタイルを削除します。
テーブルのデータ範囲をコピーします。
最後に、テーブルのスタイルを戻します。
これで、「書式なし」で、テーブルのデータ範囲をコピーできます。
「書式なし」でデータ範囲をコピーできた
「書式なし」で、テーブルのデータ範囲をコピーできました。
「書式なし」でテーブルをコピー
次は、「書式なし」で、テーブルをコピーしてみます。
「書式なし」でテーブルをコピーしたい
手順は、次のようになります。
テーブルのスタイルを保存
テーブルのスタイルを削除
テーブルをコピーする
コピー先のテーブルを、範囲に変換
テーブルのスタイルを戻す
VBAコードは、次のようになります。
Sub TEST13()
Dim A
'書式なしで、テーブルをコピー
With ActiveSheet.ListObjects("テーブル1")
A = .TableStyle 'テーブルのスタイルを保存
.TableStyle = "" 'テーブルスタイルを削除
.Range.Copy Range("F2") 'テーブルをコピー
Range("F2").ListObject.Unlist '範囲に変換
.TableStyle = A 'テーブルスタイルを戻す
End With
End Sub