セルを配列に取り込んだ際、空白が入り込んでしまった場合など、
空白を削除したい場合があります。
除去したいものがEmptyもしくは空文字列の場合は以下のコードで取り除くことが可能です。
配列から空白を除去するサンプルコード
isEmptyと””(空文字列)以外をtemp配列に入れ込み、その配列を元の配列に戻します。
'■配列からEmptyと空文字列("")を削除する
Public Function Call_Array_DeleteEmpty(arr As Variant)
Dim i As Long
Dim temp As Variant
Dim tRow As Variant
ReDim temp(UBound(arr))
For Each tRow In arr
'■tRowが空白以外であれば、temp配列に格納する
If Not IsEmpty(tRow) Then
If tRow <> "" Then
temp(i) = tRow
i = i + 1
End If
End If
Next
'■tempを空白を除いた分で再定義
ReDim Preserve temp(i - 1)
Call_Array_DeleteEmpty = temp
End Function
以下のように使用します。
Public Sub test()
Dim arr As Variant
arr = Array("東京都", "愛知県", "", "大阪府")
arr = Call_Array_DeleteEmpty(arr)
'配列が以下のようになる
'"東京都"、"愛知県"、"大阪府"
End Sub
その他
- 上記は一次元配列をこちらで作成し、空文字列(””)を削除しました。
- ワークシート内のセルを以下の記事のよう代入した1列の2次元配列も対応可能です。
配列にセル範囲を格納/動的配列をセルに貼付【ExcelVBA】
例)
arr = Range(“A1:A5”) - 通常の二次元配列(複数列)がある場合はエラーが発生します。
関連記事
一次元/二次元配列の要素数の最小値を取得する【Lbound関数】
一次元/二次元配列の要素数の最大値を取得する【Ubound関数】
配列の宣言(静的/動的/1次元/2次元)【ExcelVBA】



コメント