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

解決


サンタマリア  2003-08-22 08:39:04  No: 79109

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


oku  URL  2003-08-22 09:09:57  No: 79110

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

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

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


サンタマリア  2003-08-22 09:29:37  No: 79111

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


oku  URL  2003-08-22 10:01:44  No: 79112

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


サンタマリア  2003-08-22 17:28:40  No: 79113

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


魔界の仮面弁士  2003-08-22 19:50:41  No: 79114

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

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


toshi  2003-08-22 23:48:41  No: 79115

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-23 00:11:39  No: 79116

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

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


toshi  2003-08-23 00:16:45  No: 79117

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


とろ  2003-08-23 00:59:47  No: 79118

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

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-23 01:18:28  No: 79119

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

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-23 02:58:53  No: 79120


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


サンタマリア  2003-08-23 08:14:00  No: 79121

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


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

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






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