[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2005/08/05(Fri) 02:07
投稿者名:まさ
URL :
タイトル:
10個分の配列データを表示したいのですが
こんにちは。VBを始めて3週間のビギナーです。
早速なんですが、質問です。

今、作っているプログラムは、テキスト(メモ帳)で、店舗ID8桁と売り上げ高8桁を
(0000000100100000)の形式で、全12個分のデータが入ってるファイルを作りました。
そのファイルを読み込み、フォーム1のリストボックス(List1)に全部のデータを表示します。
フォーム1には売り上げ高の上位10店舗を売り上げ高の高い順にソートして表示するボタン「トッ
プ10」を作りました。そして、そのボタンを押すと用意した、フォーム2のリストボックス
(Result)に結果が表示される、というプログラムを作っています。
今の段階で出来ているの分を載せます。

(VB6.0)
Option Explicit ' 標準モジュール使用

Private Sub Read_Click() '---テキストデータを読み込む

    On Error GoTo ErrHandler '---エラーを表示する


    Dim FName As String   '---ファイル名を格納する変数
    Dim Out As Variant '---ファイルデータを一時格納する変数

    List1.Clear
    FName = File.Text     '---テキストボックスに打ち込まれたファイル名を開く
    num = 0       '---カウンタ変数の初期化
    num2 = 0

    Open FName For Input As #1  '---ファイル名を指定して、Inputで#1のファイルを開く
        Do Until EOF(1)             '---ファイルの末になるまで繰り返す
            Line Input #1, Out      '---1行分読み込んで格納する
            ID = Left(Out, 8)      '店舗コードの習得
            Money = Right(Out, 8)  '売上のところを切り取り

            'カンマ編集と右詰め編集
            Money = Format(Format(Money, "###,###,##0"), "@@@@@@@@@@@")
            List1.AddItem ID & ":" & Money  '店舗コードと売上を表示

            ArrayID(num) = ID           '配列変数に代入(店舗)
            num = num + 1            '店舗の加算
            ArrayMoney(num2) = Money  '配列変数に代入(売上)
            num2 = num2 + 1         '売上の加算
        Loop
    Close #1

    Tenpo.Caption = num & "店舗"    '店舗数を表示
    Exit Sub


ErrHandler:
    MsgBox Err.Description, vbCritical
End Sub


Private Sub Top_Click()
     On Error GoTo ErrHandler '---エラーを表示する

    Dim i As Variant    'カウンタ変数
    Dim j As Variant    'カウンタ変数

    Form2.Result.Clear                                      '結果表示場所をクリアする


            For i = 0 To num - 1                            '順番を決定する位置
                For j = i + 1 To 11                         '比較をする配列のインデックス
                    If ArrayMoney(i) < ArrayMoney(j) Then '売上を比較し、入れ替えをする
                        SMoney = ArrayMoney(i)
                        ArrayMoney(i) = ArrayMoney(j)
                        ArrayMoney(j) = SMoney
                        SID = ArrayID(i)         'IDの入れ替えをする
                        ArrayID(i) = ArrayID(j)
                        ArrayID(j) = SID
                    End If
                Next j
                Form2.Result.AddItem ArrayID(i) & " : " & ArrayMoney(i)  '結果を表示する
            Next i


    Form2.Show                         'Form2を表示する
    Form1.Hide                         'Form1を非表示にする
    Exit Sub

ErrHandler:
    MsgBox Err.Description, vbCritical
End Sub


こんな感じです。
で、今悩んでいるのは、トップ10を押してデータを並べ替えた時に、12個全部のデータを表示す
るのではなく、上位10個分だけを表示させたいんです。

ご教授お願いします。

投稿時間:2005/08/05(Fri) 07:01
投稿者名:nobu
Eメール:
URL :
タイトル:
Re: 10個分の配列データを表示したいのですが
> で、今悩んでいるのは、トップ10を押してデータを並べ替えた時に、12個全部のデータを表示

> るのではなく、上位10個分だけを表示させたいんです。


>                         ArrayID(j) = SID
>                     End If
>                 Next j

                  if i < 10 then   '追加
>                       Form2.Result.AddItem ArrayID(i) & " : " & ArrayM
oney(i)  '結果を表示
する
                  end if       '追加
>             Next i


上記の追加部分のコードを追加して試して下さい。
結果表示のiは0からの様ですから(一位はi=0)
10位まで表示するにはiが9まで、すなわちiが10未満までで良いかと。

投稿時間:2005/08/05(Fri) 09:22
投稿者名:まさ
URL :
タイトル:
解決しました!
nobuさん、ありがとうございました!
無事解決しました☆(^_^)