Sub TEST1()
Dim A
'テーブルの値を配列に入力
A = ActiveSheet.ListObjects("テーブル1").DataBodyRange
End Sub
テーブルの値を配列に入力してみます。
テーブルの値を配列に入力したい
実行すると、テーブルの値を配列に入力できます。
テーブルの値を配列に入力できた
テーブルの値を配列に入力できました。
構造化参照を使う
次は、構造化参照を使って、テーブルの値を配列に入力してみます。
構造化参照の方がVBAコードがシンプルになります。
Sub TEST2()
Dim A
'テーブルの値を配列に入力
A = Range("テーブル1")
End Sub
構造化参照を使って、テーブルの値を配列に入力してみます。
テーブルの値を配列に入力したい
実行すると、構造化参照を使って、テーブルの値を配列に入力できます。
テーブルの値を配列に入力できた
構造化参照を使って、テーブルの値を配列に入力できました。
セルに入力するときは「Resize」を使う
配列をセルに入力するときは「Resize」を使うと便利です。
配列をセルに入力
配列をセルに入力してみます。
Sub TEST3()
Dim A
'テーブルの値を配列に入力
A = Range("テーブル1")
'セルに入力
Range("F3").Resize(UBound(A, 1), UBound(A, 2)) = A
End Sub
「.Resize」でセル範囲を設定することができます。
「Ubound」で、配列の大きさを取得することができます。
では、配列をセルに入力してみます。
配列をセルに入力したい
実行すると、配列の値をセルに入力できます。
配列をセルに入力できた
配列の値をセルに入力できました。
テーブルに入力する
次は、配列をテーブルに入力してみます。
「ListObjects」を使う場合のVBAコードです。
Sub TEST4()
Dim A
'テーブルの値を配列に入力
A = Range("テーブル1")
'テーブルに入力
ActiveSheet.ListObjects("テーブル2").Range(2, 1).Resize(UBound(A, 1), UBound(A, 2)) = A
End Sub
「構造化参照」を使う場合のVBAコードです。
Sub TEST5()
Dim A
'テーブルの値を配列に入力
A = Range("テーブル1")
'テーブルに入力
Range("テーブル2").Resize(UBound(A, 1), UBound(A, 2)) = A
End Sub
では、配列の値を、テーブルに入力してみます。
配列をテーブルに入力したい
実行すると、配列の値を、テーブルに入力できます。
配列をテーブルに入力できた
配列の値を、テーブルに入力できました。
テーブルの最終行に入力する
次は、配列をテーブルの最終行に入力してみます。
ポイントは、「Find」を使って、データ行数を取得する点になります。
「ListObjects」を使う場合です。
Sub TEST6()
Dim A
'テーブルの値を配列に入力
A = Range("テーブル1")
Dim B
With ActiveSheet.ListObjects("テーブル2").Range
'データ行数を取得
B = .Find("*", , , , 1, 2).Row - .Row + 1
'最終行に入力
.Cells(B + 1, 1).Resize(UBound(A, 1), UBound(A, 2)) = A
End With
End Sub
「構造化参照」を使う場合です。
Sub TEST7()
Dim A
'テーブルの値を配列に入力
A = Range("テーブル1")
Dim B
With Range("テーブル2[#ALL]")
'データ行数を取得
B = .Find("*", , , , 1, 2).Row - .Row + 1
'最終行に入力
.Cells(B + 1, 1).Resize(UBound(A, 1), UBound(A, 2)) = A
End With
End Sub