大学生です。プログラミングの授業で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を利用して作ると言うカテゴリにいるので、その点も踏まえて、これでわかる方がいましたら、よろしくお願いします。
No.2
- 回答日時:
> 加算はできるのですが、減算をしてくれない状態です。
> IFとCASEを利用して作ると言うカテゴリにいるので
「減算をしなければならない」のでしょうか?
良くやるのは、
『「現在の状態を元に、0から計算する」プログラム(関数)を1つ作って、各イベントから呼び出す』
ですけど・・・
#そうすれば、「加算だけ」で計算できますけど・・・
後、提示されたコードで気になった点。
・goukeiとかpre_goukeiは、どういう用途で使っている?
・「If CheckBox1.Checked = True Then」の中に
「If CheckBox1.Checked Then」を書いても意味無いですよ。
(Trueの時にしか動かない場所で、同じチェックをしても結果は変わらないです)
ご回答ありがとうございます。
goukeiやpre_goukeiは、後に集計させるのに利用するため先に作ってあるだけで、今回の件では関係ありませんでした。すみません・・・・
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
といった具合で良いかと思いますが ・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) VBAの繰り返し処理について教えてください。 3 2022/08/02 13:21
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Visual Basic(VBA) Excel vbaについての質問 3 2023/04/18 16:14
- Visual Basic(VBA) エクセルのVBAでダブルクリックでチェックを入れたあと 1 2022/10/26 20:30
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Java java 引数 戻り値のあるメソッド 3 2023/02/12 06:23
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
CとFORTRANの計算速度はどちら...
-
プログラミング 処理速度
-
60進数の四則計算
-
再帰呼び出しの計算量
-
構文解析を利用した計算プログ...
-
数値計算の高速化 (cos, sin, exp)
-
Perlでのルートの計算
-
排他的論理和 BCC(水平パリテ...
-
Perlで時間の計算
-
DLL(VC++で作った)で稼動中の...
-
Visual C++でdebugとreleaseで...
-
「評価」「評価値」という言葉...
-
[急募]Pythonについてです。
-
10進数から8進数へ
-
VBAの再計算が反映されない件に...
-
VB6.0でのバイナリデータの扱い...
-
R言語での極小値の指数形式での...
-
円周上の3点で作られる三角形...
-
アドオン利率を実質年率に変換
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
VBAの再計算が反映されない件に...
-
排他的論理和 BCC(水平パリテ...
-
EXCELなどで「返す」という表現
-
C言語の課題で、1年の秒数を計...
-
バッチファイルでウインドウを...
-
骨折リスク評価のFRAXについて...
-
変化させるセルが変化しない
-
CとFORTRANの計算速度はどちら...
-
なぜオーバーフローになるので...
-
数値計算の高速化 (cos, sin, exp)
-
モジュラス103の計算とは何でし...
-
C# 計算処理中に実行中ウィン...
-
モジュロ
-
引き放し法による除算アルゴリ...
-
60進数の四則計算
-
C言語についてです。 再帰を使...
-
Perlで時間の計算
-
CRC8を教えてください
-
傾いた四角形内の範囲の条件式
おすすめ情報