重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

お世話かけます。

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)一次元として処理しています。

変数設定で多次元配列にする記述式か処理方法をご教示願います。

A 回答 (1件)

> 変数設定で多次元配列にする記述式か処理方法をご教示願います。



そういう記述式は、無いと思いますよ。

処理でやるなら、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)
------------------------------------
こうするとか・・・
    • good
    • 0
この回答へのお礼

! 即答ありがとうございます。

Select Case ,行けますね。
>そういう記述式は、無いと思いますよ。
やはり。
String コンバートしたり色々やっているのですが、
自分の見落としから、
プロパティやメソッドで有りそうで無い事の確認が
出来て安心しました。

>最悪60個作れば・・・
そうですね。・・・
質問のニュアンスをご理解頂いてありがたいです。
「 , 」をVBAが次元の区切りと要素の区切りを認識してくれれば
解決出来るのですが。

dsuekichiさん、お世話になりました。

お礼日時:2007/02/16 08:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!