配列のループを終了するには?

解決


はじめ  2001-12-25 22:44:13  No: 103917  IP: [192.*.*.*]

基本的なことすぎてすいません。
昨日からVBの、というか初めてプログラムなるものを勉強しています。

そこで質問なのですが、配列をつくり、その配列がなくなるまでループさせたいのですが、終了条件が分かりません。

どなたかアドバイスお願いします。

編集 削除
たかみちえ  URL  2001-12-26 00:28:53  No: 103918  IP: [192.*.*.*]

For...Nextを使います。
初めと終わりの数には、LBoundとかを使います。
詳しくはMSDNライブラリとかを見てください。

  ところで、イブの日からはじめたばっかりということですけど、
それならば、いちおう助言を1つ…。

  MSDNライブラリ(またはそれと同じようなもの)は、印刷したり、要約して表を作ったりして、
パソコンを使わずにも読めるようにしておくといいですよ。
(わたしは印刷して、それを要約して表を作って覚えました)
  VBの命令というのは、標準だけで相当な数あります。
(APIのこととか、CreateObjectで作れるオブジェクトのメソッドとか、
  全部数えると相当な量になります、わたしもそこまでは覚えていません^^;)
  だから表を作るとかしないと、ちょっと全部は扱えないかもしれません。
(結局扱う必要のないものも結構ありますけどね^^;)

編集 削除
はじめ  2001-12-26 16:34:56  No: 103919  IP: [192.*.*.*]

回答どうもありがとうございます。
質問の内容が分かりにくくてすいません。

私がやりたかったのは、動的な配列なのです。
最初のループで各配列に値を格納します。

後のループで、配列の中身をリストボックスに表示させたいのですが、
最初にどれくらいの配列になるのか分からないのでとりあえず配列の大きさを
xxx  =  99999
Hairetu(xxx)

としています。

値を表示させるループは、xxx回ループさせるのではなく、
中身が存在するだけループさせたいのですが、どうもうまくいきません。
困っています。
頼りっぱなしですいません、よろしくおねがいします。

編集 削除
たかみちえ  2001-12-27 01:40:54  No: 103920  IP: [192.*.*.*]

それこそUBoundを使えばできます。
  えー、ちゃんと使ってみましたかぁ?

  …失礼しました^^;
For i = LBound(Array) To UBound(Array)
でいくらでもいいんですけど。

編集 削除
たかみちえ  2001-12-27 01:41:39  No: 103921  IP: [192.*.*.*]

あっ、多分。
(また意味が違っちゃってるといけないし^^;)

編集 削除
はじめ  2001-12-27 09:52:48  No: 103922  IP: [192.*.*.*]

丁寧な回答どうもありがとうございます。
えーと・・・実行は出来たのですが・・・
debugで見てみると、やはり999回ループしてしまっています。
なので、表示するリストに意味のないスクロールバーができてしまいます。

私のやり方がますいのでしょうか?
    前もって(グローバルで)
    AAAAA()という配列を作っておきます。
    
    cnt=999
    Redim  AAAAA(cnt)

    For i = LBound(AAAAA) To UBound(AAAAA)
        'リストに追加
        lst1.AddItem AAAAA(i)
Debug.Print i
    Next

何度も助けていただいているのに文句ばっかりですいません。
よろしくおねがいします。

編集 削除
こーちん  2001-12-27 11:37:54  No: 103923  IP: [192.*.*.*]

はじめまして。

動的配列がString型と仮定して話を進めさせて頂きます。

配列の中身が入っているだけループさせるのなら
まずはFor...Next でループして、その中で配列
の中身をチェックし、入っていなければループを
抜け出せばいいのでは?
一応サンプルを載せておきます。

'配列のはじめからおわりまでループ
For I = LBound(strArray) To UBound(strArray)
        '中身が入っていなかったら
        If strArray(I) = "" Then
            'ループを抜ける
            Exit For
        End If
        
        List1.AddItem strArray(I)
Next I

質問の意味が違っていたらすみません。

編集 削除
はじめ  2001-12-27 14:28:21  No: 103924  IP: [192.*.*.*]

なるほど!中身を調べればいいのですね。
ありがとうございます。終了条件にばかり気をとられて、中身まで気にしていませんでした。

たかみちえさん、こーちんさんありがとうございました。

編集 削除