色々足りない Excel VBA のなかでも頻繁に歯ぎしりさせられる可変長配列。
データを読みながら、使うものだけ取り出していくような場合、こんな感じになる。
// コード例を載せたいときはこのようにスル Dim customers() as Customer ・・・ for i = 0 to dataCount ・・・ if(sgn(customers) = 0) then redim customers(0) else redim preserve customers(ubound(customers) + 1) end if set customers(ubound(customers)) = customer nextどのタイミングで最初の1件が見つかるかわからないから、初期化チェックが必要。
(ループの前で初期化しちゃう手もなくはないが「0番目は必ず空っぽ」というイマイチなデータができあがる)
こういう風にできないかと思ったんだけど
// コード例を載せたいときはこのようにスル public function append(toArray as Variant, val as Variant) as Variant if(sgn(toArray) = 0) then redim toArray(0) else redim preserve toArray(ubound(toArray) + 1) end if set toArray(ubound(toArray)) = val append = toArray end function
呼び出し元の配列もVariantにしなきゃならない(型指定の配列にできない)。
・・・それでも中身の型は維持されるから、これがましなのかなあ。
コメント
コメントを投稿