こんにちは。いつもお世話になります。
動的配列についてなにか裏技はないかと思い
投稿してみました。
お知恵がありましたら伝授お願いします。
今、開発中のシステムで動的変数をたくさんの個所で使っていて
不便だなぁと思う点があります。
動的変数の下限値を Option Base 1 にて1から配列を作成しているのですが、
Option Base 1
Dim Data() as String
Redim Data(3,1)
Redim Preserve Data(3,Ubound(Data)+1)
とすると 下限が1からではなく2からデータが入ることになり
よろしくありません。
かといって、別に変数を作り
Dim i as integer
Dim Data() as String
Redim Data(3,1)
i = 1
Do Until Flag = True then
Redim Preserve Data(3,i)
Data(1,Ubound(Data,2))=a
Data(1,Ubound(Data,2))=a
loop
すいません。
2度も誤送信してしまいました(−−。
↓見直し後、訂正してもう一度載せます。
とすると 配列のインデックスが2からデータが入ることになり
使用上好ましくありません。
かといって、別に変数を作り
Dim i as integer
Dim Data() as String
Redim Data(3,1)
i = 0
Do Until Flag = True then
i = i +1
Redim Preserve Data(3,i)
Data(1,Ubound(Data,2)) = a
Data(2,Ubound(Data,2)) = b
Data(3,Ubound(Data,2)) = c
Loop
Option Base 1 を 使わずに動的配列を使っても同じ事になるとおもうので
すが、皆様はどのように回避しているのでしょうか?
配列の上限に格納したあとに 動的変数の上限を1上げたり
その前に条件を満たしたら Exit Doすればよい話ですが
仕様としてそれは使いたくありません。
なにかよい案ありませんか?
> 皆様はどのように回避しているのでしょうか?
そもそも、多次元配列を使わず多段階配列を使ってます。
多段階配列は.Netのみでしたよね?
当方の環境は6.0です。
仕方ないので
このままの仕様でいきます。
ご回答ありがとうございました。
VB6 - [他の配列を含む配列]
http://www.microsoft.com/japan/developer/library/VBCon98/vbconarrays.htm
> 多段階配列は.Netのみでしたよね?
勝手に自己解決せず Type を使いましょう :)
お返事ありがとうございます。
構造体の配列を使っている個所もありますが、項目数が数えるくらいの場合
のみ使用しています。
今回の質問は、ループ数が限られていない処理での動的配列の下限インデックスを
他の変数を用いずに、1から始まる配列を作成できたら分かりやすくて便利なのに〜
というものぐさな質問なので、こんな質問にご回答していただきありがとうございました。
>Dim arrX(2) As Variant ' 要素が 2 つのバリアント型の配列を宣言します。
>arrX(1) = countersA() ’各要素に別の配列を代入します。
>arrX(2) = countersB()
>MsgBox arrX(1)(2) ' 各配列の要素を表示します。
>MsgBox arrX(2)(3)
このコードは初心者なので分かりませんでした(−−。
勉強が必要ですね。がんばります。ありがとうございました。
ツイート | ![]() |