前提・実現したいこと
VBAにて動的配列に対してデータを追加していくときに、appendメソッド等あればよいのですがないため
UBound()を使ってReDim Preserve で配列長を伸ばしてデータをセットしていくようにしてます。
ただ、宣言した時点ではUBound()を実行するとエラーになるため別途配列長を変数で持つ等の対策が必要になるかと思います。
そこで質問です。VBAにおいて動的配列の初期化・データ追加のやり方は、どのようなやり方がいいのでしょうか。
以下の提示の中の方法からどれがいいかでもいいのでご意見教えてください。
試したこと
VBA
1 ' Variant型及びVariant型配列であればArray()関数で初期化が出来る。 2 ' UBound()も-1から始まる為 3 ' Redim t(UBound(t)+1) 4 ' t(UBound(t))="a" 5 ' としてデータを追加していける。 6 Dim t() As Variant 7 t = Array() ' 問題無し 8 Dim t2 As Variant 9 t2 = Array() ' 問題無し 10 Dim t3() As String 11 ' ReDim t3(-1) ' 実行時エラー 12 ' ReDim t3 ' 構文エラー 13 ' ReDim t3() ' 構文エラー 14 ' t3 = Array() ' 実行時エラー 15 ' Erase t3 ' UBound()で実行時エラー 16 t3 = Split("", ",") ' 問題無し。UBound()で-1が返却。私は大抵これを使って実装しています。 17 Dim t4() As Long 18 ' t4 = Split("", ",") ' 実行時エラー 19 ' ・もう一つ配列長の変数を用意する実装する 20 ' ・エラートラップでReDim Preserve t4(Ubound(t4)+1)が失敗したら 21 ' ReDim Preserve t4(0)として実装する。エラーの処理が時間かかりそう?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/17 23:13 編集
2021/03/17 23:16
2021/03/17 23:23
2021/03/17 23:26