指定したセル範囲のアクティブセル領域(表範囲)を取得するのは、
CurrentRegionプロパティですぐに取得が出来ます。※可変の最終行などを取得する必要はありません。
実際業務で使う場合、見出し行を除いた有効なデータのみ必要なケースが多くあります。
(例)
・インポート用のCSVデータに変換する際、ヘッダー部は外さないといけない。
・支店からのデータを結合して、本部に提出しないといけない。
・インポート用のCSVデータに変換する際、ヘッダー部は外さないといけない。
・支店からのデータを結合して、本部に提出しないといけない。
ヘッダー行(見出し)を除いて表範囲を配列に格納するサンプルコード
サンプルのシート状態は以下とします。
'■指定範囲を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プロパティ(指定範囲をずらす)
コメント