[リストへもどる]
一括表示

投稿時間:2003/11/30(Sun) 18:11
投稿者名:てん
Eメール:
URL :
タイトル:
チェックボックスを使った計算
はじめまして。

チェックボックスを使って単位計算のプログラムを作ろうとしています。
「単位を取得した科目の所にチェックを入れていけば、
取得単位数がラベルに表示される。」
というような感じにしたいと考えています。
しかし、チェックを入れ、ラベルにその科目の単位数が加算された後、
チェックを外してみると、取得単位数が減りません。
どうすればよいのでしょうか?

よろしくお願い致します。

投稿時間:2003/11/30(Sun) 19:02
投稿者名:あき☆彡
Eメール:
URL :
タイトル:
Re: チェックボックスを使った計算
> はじめまして。
はじめまして(* ̄0 ̄)/

チェックでラベルに加算しているのならば、
チェックを外したら減算しているんですよね?
加算と減算を正しく行っていれば良いと思いますが・・・

あとは実際のコードをみないと、
回答できません。。。Σ(; ̄□ ̄A アセアセ

投稿時間:2003/11/30(Sun) 22:03
投稿者名:てん
Eメール:
URL :
タイトル:
Re^2: チェックボックスを使った計算
お返事ありがとうございます。

> チェックでラベルに加算しているのならば、
> チェックを外したら減算しているんですよね?
はい。そうです。

> 加算と減算を正しく行っていれば良いと思いますが・・・
正しく行ってない気がします。
VB初心者なので、全くと言っていいほど理解出来てないんです…。
お恥ずかしながらどこをどう直せばよいかすら解っていません。

コードを載せてみます。
実行は出来るのですが、間違いだらけです(×_×;
よろしくお願いします。


Private Sub Check1_Click()

    If Check1.Value = 1 Then
        Label1 = Label1 + 2
    Else
        Label1 = Label1 + 0
    End If
        
End Sub

Private Sub Check2_Click()

    If Check2.Value = 1 Then
        Label1 = Label1 + 1
    Else
        Label1 = Label1 + 0
    End If
        
End Sub

投稿時間:2003/11/30(Sun) 22:55
投稿者名:あき☆彡
Eメール:
URL :
タイトル:
Re^3: チェックボックスを使った計算
> > チェックでラベルに加算しているのならば、
> > チェックを外したら減算しているんですよね?
> はい。そうです。
書かれたコードでは減算してませんね( ̄▽ ̄;)!!
加算も・・・
Check1では2加算しているのに、
Check2では1加算していますよね?
単位数って、
どちらも1加算するのとは違うんです?

減算は・・・
今チェックを外した時に、
0を加算してますよね?
ここは加算した値と同じ値を減算しなければいけません。
Check1で+2
Check2で+1
が正しいのなら
Check1は+0ではなく-2
Check2は+0ではなく-1
です。
これで加算減算が正しく行われます。

あと気になった点は、
1.コントロールのプロパティは省略しない方が良いです。
 ラベルコントロールでプロパティは省略せずに、
 Captionを書きましょう。
2.ラベルコントロールのCaptionはString型なので、
 加算減算する時は数値型に変換しましょう。
3.また計算した数値をCaptionに設定する時は
 String型に変換しましょう。
4.Check1とCheck2の処理は殆ど同じですよね?
 コントロール配列にするなり、
 関数を作るなりしましょう。
 コードがすっきりします。

> VB初心者なので、全くと言っていいほど理解出来てないんです…。
> お恥ずかしながらどこをどう直せばよいかすら解っていません。
最初は私も同じでしたよ。
ですから恥ずかしい事ないです。
一つ一つ覚えていきましょう(^_-)v

投稿時間:2003/11/30(Sun) 23:34
投稿者名:てん
Eメール:
URL :
タイトル:
Re^4: チェックボックスを使った計算
お返事ありがとうございます。

> 書かれたコードでは減算してませんね( ̄▽ ̄;)!!
> 加算も・・・
…あはは(−_−;
すみません(×_×)

> Check1では2加算しているのに、
> Check2では1加算していますよね?
> 単位数って、
> どちらも1加算するのとは違うんです?
資料を見たところ、科目によって単位数が違うんです。
あ、載せたコードはCheck1・2しかありませんが、実際にはもっと科目数があるんですよ。
とりあえず短いプログラムを作ってみようと思いまして。

教えていただき、ありがとうございましたm(_ _)m
再びコードを作ってみます。
調べても解らない事が出てきたら、また教えて下さい。
お手数おかけしますが、よろしくお願いします。

投稿時間:2003/12/01(Mon) 17:32
投稿者名:てん
Eメール:
URL :
タイトル:
Re^5: チェックボックスを使った計算
昨日はありがとうございました。
いただいたアドバイスを元にコードを作ってみました。
気になった点を4つ挙げて下さりましたよね?
4番目の点は、本を片手に勉強しています。
それ以外はやってみたのですが、間違っているような気がして…。
またコードを載せますので見ていただけますか?
よろしくお願いしますm(_ _)m


Private Sub Label1_Click()

    Alignment = 1
    BorderStyle = 1
    Caption = "0"
    
End Sub

Private Sub Check1_Click()

    If Check1.Value = 1 Then
        Label1 = Val(Label1.Caption) + 2
    Else
        Label1 = Val(Label1.Caption) - 2
    End If
        
End Sub

Private Sub Check2_Click()

    If Check2.Value = 1 Then
        Label1 = Val(Label1.Caption) + 1
    Else
        Label1 = Val(Label1.Caption) - 1
    End If
        
End Sub

投稿時間:2003/12/01(Mon) 21:49
投稿者名:あき☆彡
Eメール:
URL :
タイトル:
Re^6: チェックボックスを使った計算
> 昨日はありがとうございました。
どういたしまして(/*'-'*)/

> それ以外はやってみたのですが、間違っているような気がして…。
> またコードを載せますので見ていただけますか?
良いですよ(●⌒∇⌒●)

まず、、、

> Private Sub Label1_Click()
>
>     Alignment = 1
>     BorderStyle = 1
>     Caption = "0"
>    
> End Sub
ラベルクリックで何をしたいのか分かりませんΣ(; ̄□ ̄A
Captionに0を設定していますが、これではフォームタイトルが0になるだけですよね?

> Private Sub Check1_Click()
>
>     If Check1.Value = 1 Then
>         Label1 = Val(Label1.Caption) + 2
>     Else
>         Label1 = Val(Label1.Caption) - 2
>     End If
>        
> End Sub
ここは前回より良くなってますね。
これで加算減算は正しく行われるようになっていると思います。
ただ前回書き忘れましたが、
>     If Check1.Value = 1 Then
VBにはあらかじめ定数があって、
それを使った方がコードが見やすくなります。
1では何か分からないですよね?
で、こんな感じに書く事が出来ます。
Private Sub Check1_Click()
    If Check1.Value = vbChecked Then
        Label1.Caption = CStr(Val(Label1.Caption) + 2)
    Else
        Label1.Caption = CStr(Val(Label1.Caption) - 2)
    End If
End Sub

次のステップは関数やコントロール配列を使った方法です。
また分からなかったら質問して下さい。

投稿時間:2003/12/01(Mon) 23:40
投稿者名:てん
Eメール:
URL :
タイトル:
Re^7: チェックボックスを使った計算
お返事ありがとうございます。
そして見ていただいてありがとうございます(T◇T)

> ラベルクリックで何をしたいのか分かりませんΣ(; ̄□ ̄A
> Captionに0を設定していますが、これではフォームタイトルが0になるだけですよね?
あれ!?
自分の中では、ラベルコントロールでプロパティで書いたつもりだったんですが…。
違うようですね(汗)
いつもプロパティウインドウの方で設定してしまっているので、本を参考に書いたのです。
…といっても、所々抜粋してるだけですが(×_×;


> これで加算減算は正しく行われるようになっていると思います。
よかったです(;^−^A

> >     If Check1.Value = 1 Then
> VBにはあらかじめ定数があって、
> それを使った方がコードが見やすくなります。
> 1では何か分からないですよね?
そうですね。
パッと見ただけでは分かりにくいですね。
本で1と書いてあったので、チェックされたら1とプログラム上で伝わるのかと思いました。

> で、こんな感じに書く事が出来ます。
> Private Sub Check1_Click()
>     If Check1.Value = vbChecked Then
>         Label1.Caption = CStr(Val(Label1.Caption) + 2)
>     Else
>         Label1.Caption = CStr(Val(Label1.Caption) - 2)
>     End If
> End Sub
おぉ!!そうなるんですか!
必要な部分しか本を読んでないので、定数等はよく知りませんでした。
勉強になりますm(_ _)m

> 次のステップは関数やコントロール配列を使った方法です。
> また分からなかったら質問して下さい。
よろしくお願いします。