コマンドボタンをクリックしたらリストボックスにある数字の和をラベルに表示するには?

解決


サンタマリア  2003-08-21 23:39:04  No: 79109  IP: [192.*.*.*]

コマンドボタンをクリックしたらリストボックスの数値の和を
ラベルに表示させたいのですが、どうすればよいのでしょうか?
どうしてもうまくいきません。

編集 削除
oku  URL  2003-08-22 00:09:57  No: 79110  IP: [192.*.*.*]

うーーん  どこが上手くいかないのかわかりません。

1  コマンドボタンをクリックしたら
2  リストボックスの数値(内容)を知りたい
3  和の求め方
4  ラベルに表示させたいのですが

どれがわからないんでしょうか?
もしかして全部?

編集 削除
サンタマリア  2003-08-22 00:29:37  No: 79111  IP: [192.*.*.*]

うまくいかないのはリストボックス内の数値の和の求め方です。
クリックしてもラベルには何も反応しないんです。

編集 削除
oku  URL  2003-08-22 01:01:44  No: 79112  IP: [192.*.*.*]

ラベルになにも表示されないって事ですか?
ラベルに表示させるときは、Captionに値をセットしてください。
リストボックスの数値(内容)を全部知る方法はご存知ですか?
できればコードを載せて下さい。

編集 削除
サンタマリア  2003-08-22 08:28:40  No: 79113  IP: [192.*.*.*]

リストボックスの数値を全部知る方法はわかりません。
コマンドのコードは今のところ
private  Sub  Command1_Click()
    Label1.Caption = ”合計” &  Val(List1.Text)
End Sub
なんですが、間違っているとは思うんですけどどう直せばいいのか・・・

編集 削除
魔界の仮面弁士  2003-08-22 10:50:41  No: 79114  IP: [192.*.*.*]

ListBoxコントロールの、ListCountプロパティとListプロパティを併用してください。

ListCountは、ListBoxに表示されている項目数を示し、
List(n)は、ListBoxのn番目の項目のテキストを返します。

編集 削除
toshi  2003-08-22 14:48:41  No: 79115  IP: [192.*.*.*]

Private Sub Command1_Click()
    Dim i As Long
    Dim LngSum As Long
    LngSum = 0
    For i = 0 To List1.ListCount
        LngSum = LngSum + Val(Me.List1.List(i))
    Next i
    
    Me.Label1.Caption = "合計" & LngSum
    
End Sub
サンプルコードです。
こんな感じでよいですか?

編集 削除
とろ  2003-08-22 15:11:39  No: 79116  IP: [192.*.*.*]

> こんな感じでよいですか?

そんな感じで良いと思います。
でも、エラーが出ますよ。
とりあえずは、実行してみることです。

編集 削除
toshi  2003-08-22 15:16:45  No: 79117  IP: [192.*.*.*]

どこで出ましたか?
自分がやった時は出ませんで
空行でも大丈夫だったし。

編集 削除
とろ  2003-08-22 15:59:47  No: 79118  IP: [192.*.*.*]

失礼しました。
実行時エラーが発生すると思い込んでいましたが、
実際は発生しませんでしたね。

List1 の中に 100 と 200 の2つ数値が入っているとします。
その場合
List1.List(0) = "100"
List1.List(1) = "200"
List1.ListCount = 2
です。しかし、あなたのコードを見ると、
LngSum は、 0 + Val(List1.List(0)) + Val(List1.List(1)) + Val(List1.List(2))
のように計算しています。

ここで『 List1.List(2) はない』っていうエラーが発生すると思っていたのですが、
List の場合エラーは発生せず "" として扱われるみたいです。
私の勘違いです。混乱させてしまい、すみませんでした。

編集 削除
toshi  2003-08-22 16:18:28  No: 79119  IP: [192.*.*.*]

先ほどのコードはダメダメですね、すみません(ペコリ)

Private Sub Command1_Click()
    Dim i As Long
    Dim LngSum As Long
    LngSum = Val(Me.List1.List(0))
    
    For i = 1 To List1.ListCount - 1
        Debug.Print Me.List1.ListIndex
        
        LngSum = LngSum + Val(Me.List1.List(i))
    Next i
    
    Me.Label1.Caption = "合計" & LngSum
    
End Sub

こちらに訂正しました。

編集 削除
とろ  2003-08-22 17:58:53  No: 79120  IP: [192.*.*.*]


今度のコードだと、 100 と 200 の2つ数値が入っている場合
    List1.List(0) = "100"
    List1.List(1) = "200"
    List1.ListCount = 2
LngSum は、 0 + Val(List1.List(1)) のようになって、
合計が 200 ってなりそうな気がするんですけど...

編集 削除
サンタマリア  2003-08-22 23:14:00  No: 79121  IP: [192.*.*.*]

皆さま、どうもありがとうございます。
おかげで作動いたしました。

編集 削除