技術的雑談-動的配列が未初期化である事を確認する
環境
- Excel 2007
目的
- 動的配列が未初期化(ReDim前)であることを確認したい
- 未初期化の動的配列にUBound()すると「インデックスが範囲外です」エラーになる
原因
未初期化動的配列は名前だけ宣言されているので、UBound()が-1になっても良さそうですが、実際は実行時エラーになります。
使いづらい…。
対処
動的配列の型が文字列(String)である場合に限り、以下の方法が使えます。
ReDim array() as String ' 未初期化の動的文字列配列 If (Len(Join(array)) = 0) Then ' 未初期化だった時の処理 End If
全部つなげて文字列にして、その文字列長が0だったら「未初期化」と扱うわけですね。
履歴
2010/02/03 -- 初版
技術的雑談へ戻る