2017年9月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
無料ブログはココログ

« VBAの配列に不定数の要素を追加するには?(その3) | トップページ | VBScriptやVBAの配列が初期化されているか? 配列の次元数は? »

2008年5月21日 (水)

VBAの配列に不定数の要素を追加するには?(その4)

空の配列も、未初期化の配列も、エラーハンドリングも使わないで、なぜか、逆説的に、デクレメントやEraseを使う方法です。

Dim a() As String
Dim f As String
ReDim a(0)
f = Dir("*")
Do While Len(f)
  a(UBound(a)) = f
  ReDim Preserve a(UBound(a) + 1)
  f = Dir()
Loop
If UBound(a) Then
  ReDim Preserve a(UBound(a) - 1)
Else
  Erase a
End If
MsgBox Join(a, vbLf)

これも、要素がないと、後で使うときにエラーになるので、要素が必ず存在するような場合に使うとよいでしょう。

或いは、配列の最後に空の要素を余分に持つというコンベンションにすれば、デクレメントやEraseは不要です。
For k = 0 To UBound(a) - 1
で回す。とか、
Join(a, vbLf)
で末尾にも改行が付いて、これはこれで便利です。

« VBAの配列に不定数の要素を追加するには?(その3) | トップページ | VBScriptやVBAの配列が初期化されているか? 配列の次元数は? »