• 締切済み

Visual Basic 合計がうまく出せません。

Visual Basicを習い始めたばかりですので、コードが分かり難くてすみません。チェックボックスとラジオボタンを使って合計等を出したいのですが、下のコードだとTax、Subtotal、Totalが0になってしまいます。各々のチェックボックスとラジオボタンに下のコードを入れてから、合計等が0になってしまいました。その前は、きちんと計算は出来ていたのですが。ご教授宜しくお願いいたします。 ---------------------- Private Sub Checkbox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Checkbox1.CheckedChanged Dim checkbox1 As Double = 450.40 Dim checkbox2 As Double = 871.65 Dim checkbox3 As Double = 1860.56 Dim radiobutton1 As Integer = 0 Dim radiobutton2 As Double = 250.45 Dim radiobutton3 As Double = 674.24 Dim sum As Double If checkbox1.Checked = True Then sum += checkbox1 End If If checkbox2.Checked = True Then sum += checkbox2 End If If checkbox3.Checked = True Then sum += checkbox3 End If If radiobutton1.Checked = True Then sum += radiobutton1 End If If radiobutton2.Checked = True Then sum += radiobutton2 End If If radiobutton3.Checked = True Then sum += radiobutton3 End If txtSum.Text = FormatCurrency(sum) End Sub ---------------------------- Private Sub btnCalculate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCalculate.Click Dim Car As Double Dim Tax As Double Dim Sum As Double txtTax.Text = Format((Car + Sum) * (0.12), "$######.##") ‘Taxの計算 txtSubtotal.Text = Format(Car + Sum + Tax, "$######.##") ‘Subtotalの計算 Dim Subtotal As Double Dim Trade As Double txtTotal.Text = Format(Subtotal + Tax, "$######.##")  ‘合計の計算 End Sub -----------------------

みんなの回答

  • layy
  • ベストアンサー率23% (292/1222)
回答No.3

進め方を工夫するだけでも違います。 ある時点で合計は100、 でもこの時点では0、 そんなの100を0で置き換えたか、もともと0か。作った通りにしか動かない、0になるように作っている、と視点変えてみる。 メッセージボックスだとかDEBUG.PRINT等で随時内容を表示できるわけだから、その手順や随時コンパイルの癖、コマンドの使い方より直し方訓練。 掲示板では基本動くもの、原因箇所しか教えない。コマンドならいつかわかるが疑問解くまでの過程は教えてくれない。 変数名が命令やプロパティー、予約語に似ている。使い慣れていて見る方は逆に混乱する。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

質問を簡略化して Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged Dim sum As Double sum = 1 End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim sum As Double MessageBox.Show(String.Format("{0:#,##0}", sum)) End Sub をやってみるとわかるが、前者のsumは値が後者に引き継がれてないからいつも0です。 ーーーーーーーーーーーーーーー Public Class Form1 Inherits System.Windows.Forms.Form Public sum As Double Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged sum += 1 MessageBox.Show(String.Format("{0:#,##0}", sum)) End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click MessageBox.Show(String.Format("{0:#,##0}", sum)) End Sub やってみて、違いを考えたら。 プロシージャレベルの中で変数を宣言すると、綴りは同じでも別変数。スコープ(寿命)もプロシージャレベル内限定。 http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard8.htm 独学者にはVB.NETは難しいですね。

Doremifasolala
質問者

お礼

大変ありがとうございました。まだ、ラベルやボタンを貼り付けることしか習っていないところに、突然、難解な課題が出てしまったので、本当に助かりました。

  • marutone
  • ベストアンサー率40% (70/174)
回答No.1

チェックボックスやラジオボタンの変数名とコントロール名が重複しています。 Dim checkbox1 As Double = 450.40      ↑ここと If checkbox1.Checked = True Then     ↑ここ Dim checkbox1 As Double = 450.40 Dim checkbox2 As Double = 871.65 Dim checkbox3 As Double = 1860.56 Dim radiobutton1 As Integer = 0 Dim radiobutton2 As Double = 250.45 Dim radiobutton3 As Double = 674.24 これらすべての変数名をコントロール名と違う名前にしましょう。

Doremifasolala
質問者

お礼

大変ありがとうございました。初歩的なミスを丁寧に直していただき感謝いたします。

関連するQ&A