前提・実現したいこと
VBAで電卓を作成しています。
「1+1」や「2+3+1+...」のような等の足し算は何とか出来るのですが、何故か同じ書き方で
掛け算・引き算・割り算が出来ません。
どこにも問題点があるのかも解らない状態なので、解決策があれば教えていただけますでしょうか。
【補足】
・テキストボックスには同じ数字を羅列させるために一旦文字列として表しています。
ex「1111」など
・足し算は「1」、引き算は「2」、掛け算は「3」、割り算は「4」
で条件分岐するようにしています。
・オールクリアボタンを押すとテキストボックスには「0」が入るため
次に数字を押した時に「01」とか「023」などにならないようにDim enzan As Boolean で
0を上書きするようにしています。
発生している問題・エラーメッセージ
掛け算、引き算、割り算ボタンを押すとテキストボックスが「0」になり計算が出来ない。
該当のソースコード
Option Explicit
Dim ans As Double '答えを保持
Dim num As Double '入力数字
Dim ent As Integer '分岐する変数 1は+、2は-、3は*、4は/
Dim enzan As Boolean 'ture;+-*/ falseそれ以外 条件を指定した結果を保存
Dim count As Byte
Private Sub CommandButton1_Click() '1のボタン
If enzan = False Then
If TextBox1.Text = "0" Then 'コマンドを押した際に0を上書きして数値を表示
TextBox1.Text = "1"
Else
TextBox1.Text = TextBox1.Text & "1"
End If Else TextBox1.Text = "1" enzan = False
End If
End Sub
以下、2~9ボタンまで同様です。
Private Sub CommandButton12_Click() '-
enzan = True num = Val(TextBox1.Text) If ent = 1 Then ans = ans + num TextBox1.Text = ans End If If ent = 2 Then ans = ans - num TextBox1.Text = ans End If If ent = 3 Then ans = ans * num TextBox1.Text = ans End If If ent = 4 Then ans = ans / num TextBox1.Text = ans End If ent = 2
End Sub
Private Sub CommandButton13_Click() '*
enzan = Ture num = Val(TextBox1.Text) If ent = 1 Then ans = ans + num TextBox1.Text = ans End If If ent = 2 Then ans = ans - num TextBox1.Text = ans End If If ent = 3 Then ans = ans * num TextBox1.Text = ans End If If ent = 4 Then ans = ans / num TextBox1.Text = ans End If ent = 3
End Sub
Private Sub CommandButton14_Click() '/
enzan = True num = Val(TextBox1.Text) If ent = 1 Then ans = ans + num TextBox1.Text = ans End If If ent = 2 Then ans = ans - num TextBox1.Text = ans End If If ent = 3 Then ans = ans * num TextBox1.Text = ans End If If ent = 4 Then ans = ans / num TextBox1.Text = ans End If ent = 4
End Sub
Private Sub CommandButton11_Click() '足し算
enzan = Ture num = Val(TextBox1.Text) If ent = 1 Then ans = ans + num TextBox1.Text = ans End If If ent = 2 Then ans = ans - num TextBox1.Text = ans End If If ent = 3 Then ans = ans * num TextBox1.Text = ans End If If ent = 4 Then ans = ans / num TextBox1.Text = ans End If ent = 1
End Sub
Private Sub CommandButton15_Click() 'イコールボタン ここで条件分岐
If ent = 1 Then ans = ans + num TextBox1.Text = ans End If If ent = 2 Then ans = ans - num TextBox1.Text = ans End If If ent = 3 Then ans = ans * num TextBox1.Text = ans End If If ent = 4 Then ans = ans - num TextBox1.Text = ans End If
End Sub
Private Sub CommandButton18_Click() 'クリアボタン
※ここはまだ保留中です
End Sub
Private Sub CommandButton10_Click() '0
If enzan = False Then
If TextBox1.Text = "0" Then
TextBox1.Text = "0"
Else
TextBox1.Text = TextBox1.Text & "0"
End If
Else
TextBox1.Text = "0"
enzan = False
End If
End Sub
Private Sub CommandButton16_Click() 'オールクリア
TextBox1.Text = "0" num = 0 ans = 0 count = 0
End Sub
Private Sub CommandButton17_Click() '00
If enzan = False Then
If TextBox1.Text = "0" Then
TextBox1.Text = "0"
Else
TextBox1.Text = TextBox1.Text & "00"
End If
Else
TextBox1.Text = "00"
enzan = False
End If
End Sub
Private Sub CommandButton19_Click() '小数点
TextBox1.Text = TextBox1.Text & "."
End Sub
Private Sub UserForm_Click()
End Sub
補足情報(FW/ツールのバージョンなど)
【補足】
・テキストボックスには同じ数字を羅列させるために一旦文字列として表しています。
ex「1111」など
・足し算は「1」、引き算は「2」、掛け算は「3」、割り算は「4」
で条件分岐するようにしています。
・オールクリアボタンを押すとテキストボックスには「0」が入るため
次に数字を押した時に「01」とか「023」などにならないようにDim enzan As Boolean で
0を上書きするようにしています。
回答1件
あなたの回答
tips
プレビュー