動的配列の下限の設定の仕方

解決


イチころ  2005-01-15 02:52:39  No: 118914

こんにちは。いつもお世話になります。

動的配列についてなにか裏技はないかと思い
投稿してみました。
お知恵がありましたら伝授お願いします。

今、開発中のシステムで動的変数をたくさんの個所で使っていて
不便だなぁと思う点があります。

動的変数の下限値を  Option Base 1  にて1から配列を作成しているのですが、

Option Base 1

Dim Data() as String

Redim Data(3,1)

Redim Preserve Data(3,Ubound(Data)+1)


イチころ  2005-01-15 02:57:15  No: 118915

とすると  下限が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


イチころ  2005-01-15 03:09:17  No: 118916

すいません。
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すればよい話ですが
仕様としてそれは使いたくありません。

なにかよい案ありませんか?


じゃんぬねっと  URL  2005-01-15 03:31:18  No: 118917

> 皆様はどのように回避しているのでしょうか?
そもそも、多次元配列を使わず多段階配列を使ってます。


イチころ  2005-01-17 17:09:31  No: 118918

多段階配列は.Netのみでしたよね?
当方の環境は6.0です。

仕方ないので
このままの仕様でいきます。
ご回答ありがとうございました。


Dental  2005-01-17 18:01:21  No: 118919

VB6 - [他の配列を含む配列]
http://www.microsoft.com/japan/developer/library/VBCon98/vbconarrays.htm


じゃんぬねっと  URL  2005-01-17 18:07:11  No: 118920

> 多段階配列は.Netのみでしたよね?

勝手に自己解決せず Type を使いましょう :)


イチころ  2005-01-17 23:43:50  No: 118921

お返事ありがとうございます。
    
    構造体の配列を使っている個所もありますが、項目数が数えるくらいの場合
    のみ使用しています。
    
    今回の質問は、ループ数が限られていない処理での動的配列の下限インデックスを
    他の変数を用いずに、1から始まる配列を作成できたら分かりやすくて便利なのに〜
    というものぐさな質問なので、こんな質問にご回答していただきありがとうございました。
    
    
      >Dim arrX(2) As Variant ' 要素が 2 つのバリアント型の配列を宣言します。
      >arrX(1) = countersA()  ’各要素に別の配列を代入します。
      >arrX(2) = countersB()
      >MsgBox arrX(1)(2)      ' 各配列の要素を表示します。
      >MsgBox arrX(2)(3)

    このコードは初心者なので分かりませんでした(−−。
    勉強が必要ですね。がんばります。ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加