Sub TEST1()
'データがない場合
If ActiveSheet.ListObjects("テーブル1").DataBodyRange Is Nothing Then
Debug.Print "データはありません"
Else
Debug.Print "データがあります"
End If
End Sub
では、実行してみます。
データがない場合
テーブルにデータが「ない場合」で、データがあるかを確認してみます。
実行すると、データがないことを確認できます。
データがないことを確認できました。
データがある場合
テーブルにデータが「ある場合」で、データがあるかを確認してみます。
実行すると、データがあることを確認できます。
データがあることを確認できました。
データを確認して初期化する
データを確認して初期化するというのをやってみます。
空テーブルを初期化するとエラー
空テーブルを初期化しようとすると、エラーとなってしまいます。
Sub TEST2()
'テーブルを初期化
ActiveSheet.ListObjects("テーブル1").DataBodyRange.Delete
End Sub
Sub TEST3()
'データがある場合
If Not ActiveSheet.ListObjects("テーブル1").DataBodyRange Is Nothing Then
'テーブルを初期化
ActiveSheet.ListObjects("テーブル1").DataBodyRange.Delete
End If
End Sub
共通する部分は、「With」でくくっておきます。
Sub TEST4()
With ActiveSheet.ListObjects("テーブル1")
'データがある場合
If Not .DataBodyRange Is Nothing Then
'テーブルを初期化
.DataBodyRange.Delete
End If
End With
End Sub
Sub TEST5()
Dim A
'データを取得する
A = ActiveSheet.ListObjects("テーブル1").DataBodyRange
End Sub
実行してみます。
空テーブルの場合エラー
空テーブルの場合は、「DataBodyRange」が使えないので、エラーとなってしまいます。
「DataBodyRange」のところでエラー
DataBodyRange」のところでエラーとなってしまいました。
「DataBodyRange」で確認してデータを取得
データを取得したい場合も、「DataBodyRange」で確認してデータを取得するといいです。
Sub TEST6()
Dim A
'データがある場合
If Not ActiveSheet.ListObjects("テーブル1").DataBodyRange Is Nothing Then
'データを取得する
A = ActiveSheet.ListObjects("テーブル1").DataBodyRange
End If
End Sub
共通する部分は、「With」でくくっておきます。
Sub TEST7()
Dim A
With ActiveSheet.ListObjects("テーブル1")
'データがある場合
If Not .DataBodyRange Is Nothing Then
'データを取得する
A = .DataBodyRange
End If
End With
End Sub
空テーブルで、実行してみます。
空テーブルの場合
エラーを回避して、値は「Empty」のままになります。
エラーを回避できました。
値は、最初のままとなっています。
データがある場合
データがある場合で実行してみます。
データを取得することができます。
配列のデータを取得することができました。
構造化参照を使う方法もあり
データを取得したい場合は、「DataBodyRange」ではなく、構造化参照を使う方法もありです。
Sub TEST8()
Dim A
'データを取得する
A = Range("テーブル1")
End Sub