セルを配列に取り込んだ際、空白が入り込んでしまった場合など、
空白を削除したい場合があります。
除去したいものが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】
コメント