投稿日 | : 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個分だけを表示させたいんです。
ご教授お願いします。