質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

0回答

999閲覧

VBで電卓を作成しています。

退会済みユーザー

退会済みユーザー

総合スコア0

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2019/04/11 13:54

VBで電卓を作成しています。
電卓は全機能付きで小数点の有りです。
初心者です、ヒントなど些細なことでもアドバイスいただけると嬉しいです。
現在起きている不具合。
・小数点の計算ができない
・小数点のボタンを押しても0.にならない
・プラスマイナスの切り替えボタンが最初しか反応しない
・AC,Aが同じになってる
見づらいですが、よろしくお願いいたします。
Public Class Form1
Private ope As String = "C" '今回押されたボタンの数字以外の値保存をする変数
Private beforeln As String = "C" '今回押されたボタンの値を保存する変数
Private ans As Double = 0 '演算結果を保存する変数Private num As Double = 0'今回入力された数値を保存する変数
Private mry As Double = 0 'メモリー機能用の変数Private suu As Double = 0 '小数点の変数
Private Sub メモリー_Click(sender As Object, e As EventArgs) Handles メモリー.ClickEnd Sub
Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox1.KeyPress '数値およびポイントのみ受け付ける
If (e.KeyChar < "0"c Or e.KeyChar > "9"c) And e.KeyChar <> "." Then e.Handled = TrueEnd If
End Sub'計算方法表示'メモリステータス表示
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Label4.Text = "M+"メモリー.Text = "M"
mry = mry + ansLabel2.Text = "表示されている数値をメモリに保持している値へ足し算する"End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Label4.Text = "M-"メモリー.Text = "M"
mry = mry - ansLabel2.Text = "表示されている数値をメモリに保持している値へ引き算する"End Sub'足し算の計算式
Private Sub Button19_Click(sender As Object, e As EventArgs) Handles Button19.Click
Label4.Text = "+"Label2.Text
If beforeln >= "0" And beforeln <= "9" Or beforeln = "." Then If ope = "C" ThenEnd If
ans = CInt(TextBox1.Text) '最初に入力された数値を保存する
Else num = CInt(TextBox1.Text) 'ansに保管されているans = ans + num
'+ボタンクリック前に数値と加算TextBox1.Text = ans Select Case ope  '前回がクリアボタンが数字ボタンの時
Case "c" ans = CInt(TextBox1.Text) '前回がクリアボタン Case "=" ans = ans + num '前回がイコールボタンCase "+" num = ans End Select
End If beforeln = "+" ope = "+" End Sub
'引き算の計算式
Private Sub Button20_Click(sender As Object, e As EventArgs) Handles Button20.Click
Label4.Text = "-"
Label2.Text = "引き算をする"
If beforeln >= "0" And beforeln <= "9" Or beforeln = "." Then If ope = "C" Then End If
ans = CInt(TextBox1.Text) '最初に入力された数値を保存する Else
num = CInt(TextBox1.Text) 'ansに保管されているans = ans - num '-ボタンクリック前に数値と加算TextBox1.Text = ans Select Case ope    '前回がクリアボタンが数字ボタンの時 Case "c"
ans = CInt(TextBox1.Text) '前回がイコールボタン Case "=" ans = ans - num Case "+", "-" num = ans End Select End If
beforeln = "-" ope = "-" End Sub
'掛け算の計算式
Private Sub Button21_Click(sender As Object, e As EventArgs) Handles Button21.Click
Label4.Text = "×"Label2.Text = "掛け算をする" If beforeln >= "0" And beforeln <= "9" Or beforeln = "." Then If ope = "C" Then End If ans = CInt(TextBox1.Text) '最初に入力された数値を保存する Else num = CInt(TextBox1.Text) 'ansに保管されているans = ans * num  '+ボタンクリック前に数値と加算 TextBox1.Text = ans
Select Case ope '前回がクリアボタンが数字ボタンの時Case "c"
ans = CInt(TextBox1.Text) '前回がイコールボタンCase "=" ans = ans * num
Case "" num = ans End Select End If
beforeln = "
" ope = "" End Sub
'割り算の計算式
Private Sub Button22_Click(sender As Object, e As EventArgs) Handles Button22.Click
Label4.Text = "÷" Label2.Text = "割り算をする" If beforeln >= "0" And beforeln <= "9" Or beforeln = "." Then '最初に入力された数値を保存する If ope = "C" Then End If
ans = CInt(TextBox1.Text) 'ansに保管されているElse '+ボタンクリック前に数値と加算ans = CInt(TextBox1.Text) '前回クリックが数字以外の時ans = ans / num TextBox1.Text = ans
Select Case ope '前回がクリアボタン
Case "c" ans = CInt(TextBox1.Text) '前回がイコールボタンCase "=" ans = ans / num Case "/" num = ans End Select
End If beforeln = "/" ope = "/" End Sub
'=ボタンクリック処理
Private Sub Button23_Click(sender As Object, e As EventArgs) Handles Button23.Click
Label4.Text = "="
If beforeln >= "0" And beforeln <= "9" Then  '演算子を判定して処理を振り分け num = CInt(TextBox1.Text)
Select Case ope
Case "+" ans = ans + num
Case "-" ans = ans - num
Case "
" ans = ans * num
Case "/" ans = ans / num End Select End If TextBox1.Text = ans
beforeln = "C" Label2.Text = "計算した結果を表示する" End Sub Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click Label2.Text = "保持しているメモリの内容を数値表示へ表示する" TextBox1.Text = mry End Sub
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click TextBox1.Text = "0"
Label2.Text = "保持しているメモリの内容をクリアする" ans = 0 num = 0 beforeln = 0 ope = 0 End Sub '数字入力 '説明文を表示 Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click Label2.Text = "7を表示させます" If beforeln >= "0" And beforeln <= "9" Then
If TextBox1.Text.Length < 20 Then '直前に押されたのが数字ボタンのとき'かつ、10桁未満の数値が入力されたとき
TextBox1.Text &= "7"
End If Else TextBox1.Text = "7" End If beforeln = "7" End Sub
Private Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.Click Label2.Text = "8を表示させます" If beforeln >= "0" And beforeln <= "9" Then If TextBox1.Text.Length < 20 Then '直前に押されたのが数字ボタンのとき'かつ、10桁未満の数値が入力されたと TextBox1.Text &= "8" End If Els e TextBox1.Text = "8" End If beforeln = "8"
End Sub
Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click Label2.Text = "9を表示させます" If beforeln >= "0" And beforeln <= "9" Then If TextBox1.Text.Length < 20 Then '直前に押されたのが数字ボタンのとき'かつ、10桁未満の数値が入力されたとき TextBox1.Text &= "9" End If Else TextBox1.Text = "9"
End If beforeln = "9" End Sub
Private Sub Button10_Click(sender As Object, e As EventArgs) Handles Button10.Click Label2.Text = "4を表示させます" If beforeln >= "0" And beforeln <= "9" ThenIf TextBox1.Text.Length < 20 Then '直前に押されたのが数字ボタンのとき'かつ、10桁未満の数値が入力されたとき TextBox1.Text &= "4" End If
Else
TextBox1.Text = "4"
End If
beforeln = "4"
End Sub
Private Sub Button11_Click(sender As Object, e As EventArgs) Handles Button11.Click
Label2.Text = "5を表示させます"
If beforeln >= "0" And beforeln <= "9" Then
If TextBox1.Text.Length < 20 Then '直前に押されたのが数字ボタンのとき'かつ、10桁未満の数値が入力されたとき
TextBox1.Text &= "5"
End If
Else
TextBox1.Text = "5"
End If
beforeln = "5"
End Sub
Private Sub Button12_Click(sender As Object, e As EventArgs) Handles Button12.Click
Label2.Text = "6を表示させます"
If beforeln >= "0" And beforeln <= "9" Then
If TextBox1.Text.Length < 20 Then '直前に押されたのが数字ボタンのとき'かつ、10桁未満の数値が入力されたとき
TextBox1.Text &= "6"
End If
Else
TextBox1.Text = "6"
End If
beforeln = "6"
End Sub
Private Sub Button14_Click(sender As Object, e As EventArgs) Handles Button14.Click
Label2.Text = "1を表示させます"
If beforeln >= "0" And beforeln <= "9" Or beforeln = "." Then
If TextBox1.Text.Length < 20 Then '直前に押されたのが数字ボタンのとき'かつ、10桁未満の数値が入力されたとき
TextBox1.Text &= "1"
End If
Else
TextBox1.Text = "1"
End If
beforeln = "1"
End Sub
Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click
Label2.Text = "2を表示させます"
If beforeln >= "0" And beforeln <= "9" Then
If TextBox1.Text.Length < 20 Then '直前に押されたのが数字ボタンのとき'かつ、10桁未満の数値が入力されたとき
TextBox1.Text &= "2"
End If
Else
TextBox1.Text = "2"
End If
beforeln = "2"
End Sub
Private Sub Button16_Click(sender As Object, e As EventArgs) Handles Button16.Click
Label2.Text = "3を表示させます"
If beforeln >= "0" And beforeln <= "9" Then If TextBox1.Text.Length < 20 Then '直前に押されたのが数字ボタンのとき'かつ、10桁未満の数値が入力されたとき
TextBox1.Text &= "3"
End If
Else
TextBox1.Text = "3"
End If
beforeln = "3"
End Sub
Private Sub Button18_Click(sender As Object, e As EventArgs) Handles Button18.Click
Label2.Text = ".を表示させます"
If beforeln >= "0" And beforeln <= "9" Then
TextBox1.Text = beforeln & "."
Else
TextBox1.Text = "." & beforeln
End If
If TextBox1.Text = "" Then
TextBox1.Text = "0" & "."
End If
If TextBox1.Text = "0" Then
TextBox1.Text = "0" & "."

End If End Sub 'ACボタンクリック処理 Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click ans = 0 num = 0 beforeln = "" ope = 0 TextBox1.Text = "0" Label2.Text = "MR以外、全ての値をクリアにする" End Sub 'Cボタンクリック処理 Private Sub Button9_Click(sender As Object, e As EventArgs) Handles Button9.Click ans = 0 num = 0 beforeln = "" ope = 0 TextBox1.Text = "0" Label2.Text = "表示している数値をクリアにする" End Sub Private Sub Button17_Click(sender As Object, e As EventArgs) Handles Button17.Click Label2.Text = "0を表示させます" If beforeln >= "0" And beforeln <= "9" Then If TextBox1.Text.Length < 20 Then '直前に押されたのが数字ボタンのとき'かつ、10桁未満の数値が入力されたとき TextBox1.Text &= "0" End If Else TextBox1.Text = "0" End If beforeln = "0" End Sub Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load End Sub Private Sub Label2_Click(sender As Object, e As EventArgs) End Sub Private Sub Button13_Click(sender As Object, e As EventArgs) Handles Button13.Click Label2.Text = "プラスマイナスを表示させます" TextBox1.Text = CDec(beforeln) * (-1D) beforeln = beforeln * (-1) End Sub

End Class

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nskydiving

2019/04/11 14:40

コードは<code>タグで囲うと見やすくなりますので、修正をお願いします。
退会済みユーザー

退会済みユーザー

2019/04/12 01:42 編集

長いコード(しかもインデントもされてなくて見づらくて、たぶん誰も読む気が起きない)をベタっと貼り付けてデバッグしてくれと頼むのは、ここのようなサイトでの質問としては NG です。 デバッガを使えますか? 使えなければ、まず最低限のこと(怪しい場所にブレークポイントを設定して、そこで実行を止めて、ステップ実行しながら変数の中身を調べる)ができるように、使いい方をググって調べるなどしてください。そのようにして調べると自己解決できるケースがほとんどだと思います。 デバッグしながら自分で調べて、ある程度切り分けして、どうしてもわからないところを質問するようにすれば、役に立つ回答が得やすいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問