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

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

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

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

Q&A

2回答

3907閲覧

VB.netで電卓作成 (計算表示方法)が不明のためアドバイスをいただきたいです

kuma0808

総合スコア0

VB.NET

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

0グッド

0クリップ

投稿2020/12/21 07:53

前提・実現したいこと

VB.netで電卓作成をしているのですが、計算結果の表示はできるようになったのですが、計算履歴の表示の仕方がわからないためアドバイスをいただきたいです。
例(1+3-5+4)等
テキストボックスをもう一つ作成しそちらに計算過程が表示されるようなものを作成したいです。

VB 2017

1Public Class Form1 2 Dim dNum As Double 3 Dim ans As Double 4 Dim enzan As Integer 5 Dim enzantyu As Boolean 6 Dim sTen As Boolean 7 Dim dans As Boolean 8 Dim total As Boolean 9 10数字は1~9までは同じ表記です 11 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 12 13 If total = False Then 14 If enzantyu = False Then 15 If TextBox1.Text = "0" Then 16 TextBox1.Text = "1" 17 Else 18 TextBox1.Text = TextBox1.Text & "1" 19 End If 20 Else 21 TextBox1.Text = "1" 22 enzantyu = False 23 24 End If 25 Else 26 TextBox1.Text = "1" 27 total = False 28 29 End If 30 31 32 End Sub 33 34 Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click 35 If total = False Then 36 If enzantyu = False Then 37 If TextBox1.Text = "0" Then 38 TextBox1.Text = "2" 39 Else 40 TextBox1.Text = TextBox1.Text & "2" 41 End If 42 Else 43 TextBox1.Text = "2" 44 enzantyu = False 45 46 End If 47 Else 48 TextBox1.Text = "2" 49 total = False 50 51 End If 52 End Sub 53 54 55 Private Sub btnC_Click(sender As Object, e As EventArgs) Handles btnC.Click 'クリア 56 TextBox1.Text = "0" 57 enzantyu = False 58 sTen = False 59 total = False 60 dans = False 61 End Sub 62 63 Private Sub Button0_Click(sender As Object, e As EventArgs) Handles Button0.Click 64 If total = False Then 65 If enzantyu = False Then 66 If TextBox1.Text = "0" Then 67 TextBox1.Text = "0" 68 Else 69 TextBox1.Text = TextBox1.Text & "0" 70 End If 71 Else 72 TextBox1.Text = "0" 73 enzantyu = False 74 75 End If 76 Else 77 TextBox1.Text = "0" 78 total = False 79 80 End If 81 End Sub 82 83 Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged 84 85 End Sub 86 87 Private Sub ButTasu_Click(sender As Object, e As EventArgs) Handles ButTasu.Click '足し算 88 89 If dans = True Then 90 Select Case enzan 91 Case 1 92 ans = dNum + Val(TextBox1.Text) 93 Case 2 94 ans = dNum - Val(TextBox1.Text) 95 Case 3 96 ans = dNum * Val(TextBox1.Text) 97 Case 4 98 If Val(TextBox1.Text) <> 0 Then 99 ans = dNum / Val(TextBox1.Text) 100 Else 101 MsgBox("エラー") 102 End If 103 End Select 104 TextBox1.Text = CStr(ans) 105 dNum = CStr(ans) 106 enzan = 1 107 108 Else 109 dNum = Val(TextBox1.Text) 110 enzan = 1 111 End If 112 enzantyu = True 113 sTen = False 114 dans = True 115 total = False 116 End Sub 117 118 Private Sub ButHiku_Click(sender As Object, e As EventArgs) Handles ButHiku.Click '引き算 119 If dans = True Then 120 Select Case enzan 121 Case 1 122 ans = dNum + Val(TextBox1.Text) 123 Case 2 124 ans = dNum - Val(TextBox1.Text) 125 Case 3 126 ans = dNum * Val(TextBox1.Text) 127 Case 4 128 If Val(TextBox1.Text) <> 0 Then 129 ans = dNum / Val(TextBox1.Text) 130 Else 131 MsgBox("エラー") 132 End If 133 End Select 134 TextBox1.Text = CStr(ans) 135 dNum = CStr(ans) 136 enzan = 2 137 Else 138 dNum = Val(TextBox1.Text) 139 enzan = 2 140 End If 141 enzantyu = True 142 sTen = False 143 dans = True 144 End Sub 145 146 Private Sub ButKakeru_Click(sender As Object, e As EventArgs) Handles ButKakeru.Click '掛け算 147 If dans = True Then 148 Select Case enzan 149 Case 1 150 ans = dNum + Val(TextBox1.Text) 151 Case 2 152 ans = dNum - Val(TextBox1.Text) 153 Case 3 154 ans = dNum * Val(TextBox1.Text) 155 Case 4 156 If Val(TextBox1.Text) <> 0 Then 157 ans = dNum / Val(TextBox1.Text) 158 Else 159 MsgBox("エラー") 160 End If 161 End Select 162 TextBox1.Text = CStr(ans) 163 dNum = CStr(ans) 164 enzan = 3 165 Else 166 dNum = Val(TextBox1.Text) 167 enzan = 3 168 End If 169 enzantyu = True 170 sTen = False 171 dans = True 172 End Sub 173 174 Private Sub ButWarizan_Click(sender As Object, e As EventArgs) Handles ButWarizan.Click '割り算 175 If dans = True Then 176 Select Case enzan 177 Case 1 178 ans = dNum + Val(TextBox1.Text) 179 Case 2 180 ans = dNum - Val(TextBox1.Text) 181 Case 3 182 ans = dNum * Val(TextBox1.Text) 183 Case 4 184 If Val(TextBox1.Text) <> 0 Then 185 ans = dNum / Val(TextBox1.Text) 186 Else 187 MsgBox("エラー") 188 End If 189 End Select 190 TextBox1.Text = CStr(ans) 191 dNum = CStr(ans) 192 enzan = 4 193 Else 194 dNum = Val(TextBox1.Text) 195 enzan = 4 196 End If 197 enzantyu = True 198 sTen = False 199 dans = True 200 End Sub 201 202 Private Sub ButIkoru_Click(sender As Object, e As EventArgs) Handles ButIkoru.Click 'イコール 203 204 Select Case enzan 205 Case 1 206 ans = dNum + Val(TextBox1.Text) 207 Case 2 208 ans = dNum - Val(TextBox1.Text) 209 Case 3 210 ans = dNum * Val(TextBox1.Text) 211 Case 4 212 If Val(TextBox1.Text) <> 0 Then 213 ans = dNum / Val(TextBox1.Text) 214 Else 215 MsgBox("エラー") 216 End If 217 End Select 218 TextBox1.Text = CStr(ans) 219 enzantyu = True 220 sTen = False 221 dans = False 222 total = True 223 End Sub 224 225 Private Sub Form_initialoze() 226 dNum = 0 227 enzan = 0 228 enzantyu = False 229 sTen = False 230 End Sub 231 232 Private Sub ButDecimalPoint_Click(sender As Object, e As EventArgs) Handles ButDecimalPoint.Click '小数点 233 234 If sTen = False Then 235 If enzantyu = False Then 236 TextBox1.Text = TextBox1.Text & "." 237 Else 238 TextBox1.Text = "0." 239 enzantyu = False 240 End If 241 sTen = True 242 End If 243 244 End Sub 245 246 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load 247 TextBox1.Text = "0" 248 TextBox1.ReadOnly = True '入力不可にする処理 249 Me.FormBorderStyle = FormBorderStyle.FixedSingle 'フォームのサイズ変更不可処理 250 End Sub 251 252 Private Sub TextBox2_TextChanged(sender As Object, e As EventArgs) 253 254 End Sub 255 256 Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox1.KeyPress 257 258 End Sub 259End Class 260

補足情報(FW/ツールのバージョンなど)

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

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

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

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

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

guest

回答2

0

今のコードですと、新しいテキストボックスを作り、クリアボタン以外のボタンのクリックイベントの中に、そのテキストボックスに文字をセットする処理を追加すればよさそうです。
また、各ボタンに何の文字が表示されているのか分かりませんが、とりあえず各数字や式が表示されていると考えて、ボタンのテキストは Button.Text で取得できるので、

' ボタンに表示されているテキストをTextBox2に追加 TextBox2.Text &= Button.Text

としたほうがスマートかと思います。

投稿2020/12/22 10:25

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

何がわからないのでしょう?
今TextBox1にやっているようなことを別のTextBoxにやればいいのでは?
仮にTextBox2とした場合の例

VBNET

1' 最初に初期化 2TextBox2.Text = "" 3 4' 1がクリックされたら 5TextBox2.Text = TextBox2.Text & "1" 6 7' 2がクリックされたら 8TextBox2.Text = TextBox2.Text & "2" 9 10' +がクリックされたら 11TextBox2.Text = TextBox2.Text & "+" 12 13' -がクリックされたら 14TextBox2.Text = TextBox2.Text & "-" 15

投稿2020/12/21 08:26

ttyp03

総合スコア17000

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問