【VBA】テーブル化された表の、指定した列全体の範囲(列名除く)を取得する

テーブル化された表の
 ・指定した列全体の範囲(列名除く)を取得
できます!

列「商品名」の列全体の範囲(列名除く)
列「商品名」の列全体の範囲(列名除く)
PR

VBAコード

ここでは例として、
 ・シート「data」上の
 ・テーブル化された表「productテーブル」の
 ・列「商品名」の列全体の範囲(列名除く)を取得
します。
※取得した範囲の設定値をイミディエイトウィンドウへ出力します。

列「商品名」の列全体の範囲(列名除く)
列「商品名」の列全体の範囲(列名除く)
Option Explicit

Sub sample()

    Dim ws As Worksheet
    Dim tableName As String
    Dim targetColumnName As String
    Dim table As ListObject
    Dim targetColumnRange As Range
    Dim tmpRange As Variant

    '対象シート
    Set ws = Worksheets("data")
    'テーブル名
    tableName = "productテーブル"
    '対象の列名
    targetColumnName = "商品名"
    
    'テーブルを取得
    Set table = ws.listObjects(tableName)
    '対象の列全体の範囲(列名除く)を取得
    Set targetColumnRange = table.ListColumns(targetColumnName).DataBodyRange
    
    '「取得した範囲(セル)の数」だけ繰り返し
    For Each tmpRange In targetColumnRange
        'イミディエイトウィンドウへ出力
        Debug.Print tmpRange.Value
    Next
    
End Sub

以下を指定します(13~17行目)。
※状況に応じて任意の値を指定してください。

・対象シート
・テーブル名
・対象の列名

「Worksheetオブジェクト」の「ListObjects」プロパティにより、「ListObjectオブジェクト」を取得します(20行目)。

「ListObjectオブジェクト」の「ListColumns」プロパティにより、「ListColumnオブジェクト」を取得します(22行目)。

「ListColumnオブジェクト」の「DataBodyRange」プロパティにより、「指定した列全体の範囲(列名除く)を取得」を取得します(22行目)。

PR

実行結果

テーブル化された表の、指定した列全体の範囲(列名除く)を取得できました。
※取得した範囲の設定値をイミディエイトウィンドウへ出力できました。

実行結果
実行結果
PR

参考

上記のVBAコードで使用した以下の詳細は、公式サイトをご確認ください。

●「Worksheetオブジェクト」の「ListObjects」プロパティ


●「ListObjectオブジェクト」の「ListColumns」プロパティ


●「ListColumnオブジェクト」の「DataBodyRange」プロパティ

タイトルとURLをコピーしました