• ベストアンサー

VisualBasicの作業でわからないことが・・・教えてください!

大学生です。プログラミングの授業でVisualBasicを利用しているのですが、わからずに先に進めない状態なので、どなたか教えてください! ListBox(強中弱) × 1 CheckBox × 12 TextBox(点数表示) × 1 があります。やりたいことは、『CheckBoxにチェックを入れたとき、ListBoxで選んだレベルに応じた点数をTextBoxに表示させたい』です。 例えば、ListBoxで強を、かつCheckBox(のとある項目)にチェックを入れたら、TextBoxに『5点』と表示させるようなプログラムです。強が何点で中が何点かと言うのは定義してありますので問題ないです。しかも、チェックをはずすと、それと同じ点数をマイナスにするようにもしたいんです。 どうすればよいのでしょうか?ちなみに現段階まで作ってあるのは以下の通りです。 Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged Dim point As Integer If CheckBox1.Checked = True Then Select Case ListBox1.SelectedIndex Case 0 point = 10 If CheckBox1.Checked Then goukei = goukei + point Else goukei = goukei - point End If TextBox1.Text = goukei pre_goukei = goukei Case 1 point = 6 If CheckBox1.Checked Then goukei = goukei + point Else goukei = goukei - point End If TextBox1.Text = goukei goukei = pre_goukei Case 2 point = 3 If CheckBox1.Checked Then goukei = goukei + point Else goukei = goukei - point End If Case 3 point = 0 If CheckBox1.Checked Then goukei = goukei + point Else goukei = goukei - point End If End Select Else Select Case ListBox1.SelectedIndex Case 0 point = 10 If CheckBox1.Checked Then goukei = goukei + point Else goukei = goukei - point End If Case 1 point = 6 If CheckBox1.Checked Then goukei = goukei + point Else goukei = goukei - point End If Case 2 point = 3 If CheckBox1.Checked Then goukei = goukei + point Else goukei = goukei - point End If Case 3 point = 0 If CheckBox1.Checked Then goukei = goukei + point Else goukei = goukei - point End If End Select End If TextBox1.Text = goukei End Sub 加算はできるのですが、減算をしてくれない状態です。ちなみに、case3から下はまだ手付けずです。他にもっと効率の良いやり方があるのかもしれませんが、IFとCASEを利用して作ると言うカテゴリにいるので、その点も踏まえて、これでわかる方がいましたら、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.3

設定とコードの食い違いをちゃんと検証しましょう ComboBoxに設定される項目が 強中弱 ならSelectedIndexは『-1,0,1,2』の4種類ですよ『3』になることはないと思います 選択されていない場合が -1です このイベントで処理するなら   select case ComboBox1.SelectedIndex   case 0     point = 10   case 1     point = 6   case 2     point = 3   case else     MsgBox "コンボボックスの選択が異常です"     Exit Sub   end select   if CheckBox1.Checked = false then     ' チェックされていない場合は減算     point = -point   end if   goukei = TextBox1.Text   goukei = goukei + point   textbox1.text = goukei といった具合で良いかと思いますが ・・・

san1126
質問者

お礼

ご回答ありがとうございます。プログラムを記載していただけてとても助かります!! 早速やって見たいと思います。

その他の回答 (2)

  • dsuekichi
  • ベストアンサー率64% (171/265)
回答No.2

> 加算はできるのですが、減算をしてくれない状態です。 > IFとCASEを利用して作ると言うカテゴリにいるので 「減算をしなければならない」のでしょうか? 良くやるのは、 『「現在の状態を元に、0から計算する」プログラム(関数)を1つ作って、各イベントから呼び出す』 ですけど・・・ #そうすれば、「加算だけ」で計算できますけど・・・ 後、提示されたコードで気になった点。 ・goukeiとかpre_goukeiは、どういう用途で使っている? ・「If CheckBox1.Checked = True Then」の中に 「If CheckBox1.Checked Then」を書いても意味無いですよ。 (Trueの時にしか動かない場所で、同じチェックをしても結果は変わらないです)

san1126
質問者

お礼

ご回答ありがとうございます。 goukeiやpre_goukeiは、後に集計させるのに利用するため先に作ってあるだけで、今回の件では関係ありませんでした。すみません・・・・

  • yossy0426
  • ベストアンサー率24% (32/130)
回答No.1

どうもです。 まずはデバックして見て、減算の時にそこの式に行っているか確認しましょう。

san1126
質問者

お礼

ご回答ありがとうございます。確認してみます。