セル範囲を1次元配列として取得したい
通常、ワークシート内のセルを取得し配列化すると、二次元配列として処理されます。
※ワークシート自体が二次元配列のため。
ただ、プログラム上は一次元配列で取得、処理したほうが楽な場合があります。
セル範囲を1次元配列として取得するサンプルコード
'■セル範囲を1次元配列として取り込む。
Function Call_RangeTo1DArray(rng As Range) As Variant
Dim tmp() As Variant
Dim i As Long: i = 1
Dim r As Range
For Each r In rng
'■空白以外を取り込む(列単位で処理後、行単位で処理)
If r.Value <> "" Then
ReDim Preserve tmp(1 To i)
tmp(i) = r.Value
i = i + 1
End If
Next
Call_RangeTo1DArray = tmp
End Function
使い方
上記をお好きなモジュール内にコピペしてください。
実際に使用する時は以下のような形で使用してください。
Public Sub sample()
Dim arr As Variant
'■1次元配列に格納
arr = Call_RangeTo1DArray(Range("A1:A5"))
End Sub
その他
- セル範囲が縦のみの場合、上から下へ処理します。
- セル範囲が横のみの場合、左から右へ処理します。
- セル範囲が縦横存在する場合、左上から右方向へ処理し、その後下方向に処理を続けます。
コメント