VBATips

ヘッダー行(見出し)を除いて表範囲を配列に格納する【CurrentRegion応用】【ExcelVBA】

指定したセル範囲のアクティブセル領域(表範囲)を取得するのは、
CurrentRegionプロパティですぐに取得が出来ます。※可変の最終行などを取得する必要はありません。

実際業務で使う場合、見出し行を除いた有効なデータのみ必要なケースが多くあります。

(例)
・インポート用のCSVデータに変換する際、ヘッダー部は外さないといけない。
・支店からのデータを結合して、本部に提出しないといけない。

ヘッダー行(見出し)を除いて表範囲を配列に格納するサンプルコード

サンプルのシート状態は以下とします。

vba-get-table currentregion

'■指定範囲をarrに入れる
Public Function call_arrCreate(rng As Range)
    With rng.CurrentRegion
        call_arrCreate = .Resize(.Rows.Count - 1, .Columns.Count).Offset(1, 0)      '1行目を除いて取得
        'call_arrCreate = .Resize(.Rows.Count, .Columns.Count - 1).Offset(0, 1)      '1列目を除いて取得
        'call_arrCreate = .Resize(.Rows.Count - 1, .Columns.Count - 1).Offset(1, 1)  '1行目1列目を除いて取得
    End With
End Function

実際の使い方

Public Sub sample()
    Dim arr As Variant
    arr = call_arrCreate(Range("A1"))'Range("A1")の指定範囲を配列arrに格納する。
End Sub

注意点

CurrentRegionプロパティの応用ですが、それ以外にも以下の内容も理解しないといけません。
・Withステートメント(コード記載の冗長化を防ぐ)
・Resizeプロパティ(指定サイズを変更する)
・Offsetプロパティ(指定範囲をずらす)

関連記事

コメント

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