- 締切済み
VBA Redim において変数で次元を増やすには?
お世話かけます。 Dim Rd(),Ar as variant Ar="1,1,1" ReDim Rd(Ar) 上記の様な変数(Ar)で結果として、3次元 Rd(1,1,1)としたいのですが、 一次元として処理されます。 ''''' Rd=Array(1,1,1) 否応なく、Rd(1)(1)(1)一次元として処理しています。 変数設定で多次元配列にする記述式か処理方法をご教示願います。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- dsuekichi
- ベストアンサー率64% (171/265)
> 変数設定で多次元配列にする記述式か処理方法をご教示願います。 そういう記述式は、無いと思いますよ。 処理でやるなら、Arで指定したい次元数を数えて、次元数毎にReDimを行えば良いのではないでしょうか? #最大次元数は有限(最大60)なんですから、最悪60個作れば・・・ 例えば --------------------------------------------------------------- Sub ReDimStr(Rd() As Variant, ByVal ar As String) Dim v As Variant v = Split(ar, ",") Select Case UBound(v) Case 0: ReDim Rd(v(0)) Case 1: ReDim Rd(v(0), v(1)) Case 2: ReDim Rd(v(0), v(1), v(2)) Case 3: ReDim Rd(v(0), v(1), v(2), v(3)) Case 4: ReDim Rd(v(0), v(1), v(2), v(3), v(4)) Case 5: ReDim Rd(v(0), v(1), v(2), v(3), v(4), v(5)) ' 以下続く End Select End Sub -------------------------------------------------------------- こういうサブルーチンを作っておいて、 ------------------------------------ Dim Rd() As Variant, ar As Variant ar = "1,1,1" Call ReDimStr(Rd(), ar) ------------------------------------ こうするとか・・・
お礼
! 即答ありがとうございます。 Select Case ,行けますね。 >そういう記述式は、無いと思いますよ。 やはり。 String コンバートしたり色々やっているのですが、 自分の見落としから、 プロパティやメソッドで有りそうで無い事の確認が 出来て安心しました。 >最悪60個作れば・・・ そうですね。・・・ 質問のニュアンスをご理解頂いてありがたいです。 「 , 」をVBAが次元の区切りと要素の区切りを認識してくれれば 解決出来るのですが。 dsuekichiさん、お世話になりました。