大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで、テーブルにデータがあるかを確認するには、「DataBodyRange」を確認することでできます。空テーブルの場合は、「DataBodyRange」が使えないので、データがあるかを確認して実行すると、エラーを回避することができます。VBAでのテーブル操作をマスターしていきましょう。

はじめに

この記事では、テーブルにデータがあるかを確認する方法について、ご紹介します。

データがあるかを確認するには、「DataBodyRange」を使います。

空テーブルの場合は、「DataBodyRange」が使えないので、データがあるかを確認してから実行するとエラーを回避できます。

VBAでのテーブル操作をマスターしていきましょう。

では、テーブルにデータがあるかを確認する方法について、解説していきます。

この記事を読むメリット

  • テーブルにデータがあるかを確認する方法がわかります

目次から見たい項目へ移動すると便利ですよ。

目次

テーブルにデータがあるか確認する

テーブルにデータがあるか確認してみます。

「DataBodyRange」を使う

データがあるか確認するには、「DataBodyRange」を使うとできます。

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

実行してみます。

空テーブルだとエラー

空テーブルを初期化しようとするとエラーとなってしまいます

「DataBodyRange」が使えないので、エラーとなってしまいます。

「DataBodyRange」が使えないのでエラー

「DataBodyRange」が使えないので、エラーとなってしまいました

「DataBodyRange」が使えないので、エラーとなってしまいました。

「DataBodyRange」で確認して初期化する

テーブルを初期化したい場合は、「DataBodyRange」でデータがあるかを確認して、初期化します。

「If Not A Is Nothing Then」を使います。

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

では、実行してみます。

空テーブルの場合

空テーブルで、実行してみます。

空テーブルで、実行してみます

エラーを回避して、テーブルはそのままとなります。

エラーを回避して、テーブルはそのままとなりました

エラーを回避できました。

テーブルはそのままとなります。

データがある場合

データがある場合で、実行してみます。

データがある場合で、実行してみます

もちろん、テーブルを初期化できます。

テーブルを初期化できました

テーブルを初期化できました。

データを確認してデータを取得

データがあるかを確認して、データを取得してみます。

空テーブルからデータを取得するとエラー

空テーブルから、「DataBodyRange」を使って、データを取得するとエラーとなってしまいます。

Sub TEST5()
    
    Dim A
    'データを取得する
    A = ActiveSheet.ListObjects("テーブル1").DataBodyRange
    
End Sub

実行してみます。

空テーブルの場合エラー

空テーブルからデータを取得すると、エラーとなってしまいます

空テーブルの場合は、「DataBodyRange」が使えないので、エラーとなってしまいます。

「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」のままになります。

エラーを回避して、値はEmptyのままになります

エラーを回避できました。

値は、最初のままとなっています。

データがある場合

データがある場合で実行してみます。

データがある場合で実行してみます

データを取得することができます。

データを取得することができました

配列のデータを取得することができました。

構造化参照を使う方法もあり

データを取得したい場合は、「DataBodyRange」ではなく、構造化参照を使う方法もありです。

Sub TEST8()
    
    Dim A
    'データを取得する
    A = Range("テーブル1")
    
End Sub

データがあるかを確認する必要がないので、簡単です。

空テーブルの場合

空テーブルの場合で実行してみます。

空テーブルの場合で実行してみます

エラーはなしで、空白の配列を取得できます。

エラーはなしで、空白の配列を取得できました

エラーは出ないで、空白の配列を取得できました。

データがある場合

データがある場合で、実行してみます。

データがある場合で、実行してみます

データを取得することができます。

データを取得することができました

データありの場合も、問題なくデータを取得することができました。

おわりに

この記事では、テーブルにデータがあるかを確認する方法について、ご紹介しました。

データがあるかを確認するには、「DataBodyRange」を使います。

空テーブルの場合は、「DataBodyRange」が使えないので、データがあるかを確認してから実行するとエラーを回避できます。

VBAでのテーブル操作をマスターしていきましょう。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

サイト内を検索する

↓キーワードを入力する

アーカイブから探す