« VBScriptやVBAからJScriptのArrayオブジェクトのインデックスアクセス(その3) | トップページ | VBScriptやVBAの配列に不定数の要素を追加するには?(その2) »

2008年5月18日 (日)

VBScriptやVBAの配列に不定数の要素を追加するには?

例えば、VBAのDir()関数でファイルを列挙して配列に格納するには、

Dim a As Variant
Dim f As String
a = Array()
f = Dir("*")
Do While Len(f)
  ReDim Preserve a(UBound(a) + 1)
  a(UBound(a)) = f
  f = Dir()
Loop
MsgBox Join(a, vbLf)

JScriptならArrayオブジェクトのpush()メソッドで簡単なのですが、VBScriptやVBAの配列では2行になります。

もし、push()メソッド相当のPush関数を別に作ってやれば、1行になります。

Dim a As Variant
Dim f As String
a = Array()
f = Dir("*")
Do While Len(f)
  Push a, f
  f = Dir()
Loop
MsgBox Join(a, vbLf)

Sub Push(Items, Item)
ReDim Preserve Items(UBound(Items) + 1)
Items(UBound(Items)) = Item
End Sub

ここでは、空の配列を作るために、Array()を使用しているので、使えるのは、Variant配列だけです。:-(

« VBScriptやVBAからJScriptのArrayオブジェクトのインデックスアクセス(その3) | トップページ | VBScriptやVBAの配列に不定数の要素を追加するには?(その2) »