第20講 電卓を作ろう!
第10話 ×÷+−=のコーティング
解答例
Dim w As Double, v As Double, h As Byte, b As Byte '2012/04/14に間違いを訂正
Private Sub CommandButton2_Click()
w = 10 * w + 1
TextBox1.Text = w
End Sub
Private Sub CommandButton3_Click()
w = 10 * w + 2
TextBox1.Text = w
End Sub
Private Sub CommandButton4_Click()
w = 10 * w + 3
TextBox1.Text = w
End Sub
Private Sub CommandButton5_Click()
w = 10 * w + 4
TextBox1.Text = w
End Sub
Private Sub CommandButton6_Click()
w = 10 * w + 5
TextBox1.Text = w
End Sub
Private Sub CommandButton7_Click()
w = 10 * w + 6
TextBox1.Text = w
End Sub
Private Sub CommandButton8_Click()
w = 10 * w + 7
TextBox1.Text = w
End Sub
Private Sub CommandButton9_Click()
w = 10 * w + 8
TextBox1.Text = w
End Sub
Private Sub CommandButton10_Click()
w = 10 * w + 9
TextBox1.Text = w
End Sub
Private Sub CommandButton11_Click()
w = 10 * w
TextBox1.Text = w
End Sub
Private Sub CommandButton12_Click()
TextBox1.Text = ""
w = 0
b = 0
End Sub
Private Sub
CommandButton13_Click() '2012/04/14に間違いを訂正
If b = 1 Then
If h
= 1 Then
v = v * w
TextBox1.Text = v
End If
If h
= 2 Then
v = v / w
TextBox1.Text = v
End If
If h
= 3 Then
v = v + w
TextBox1.Text = v
End If
If h
= 4 Then
v = v - w
TextBox1.Text = v
End
If
Else
v = v + w
b = 1
End If
h = 1
w =
0
k = 0
a = 0
End Sub
Private Sub
CommandButton14_Click()
If b = 1 Then
If h = 1 Then
v = v *
w
TextBox1.Text = v
End If
If h = 2 Then
v = v /
w
TextBox1.Text = v
End If
If h = 3 Then
v = v +
w
TextBox1.Text = v
End If
If h = 4 Then
v = v -
w
TextBox1.Text = v
End If
Else
v = v + w
b =
1
End If
h = 2
w = 0
k = 0
a = 0
End Sub
Private
Sub CommandButton15_Click()
If b = 1 Then
If h = 1 Then
v =
v * w
TextBox1.Text = v
End If
If h = 2 Then
v =
v / w
TextBox1.Text = v
End If
If h = 3 Then
v =
v + w
TextBox1.Text = v
End If
If h = 4 Then
v =
v - w
TextBox1.Text = v
End If
Else
v = v +
w
b = 1
End If
h = 3
w = 0
k = 0
a = 0
End
Sub
Private Sub CommandButton16_Click()
If b = 1 Then
If h = 1
Then
v = v * w
TextBox1.Text = v
End If
If h = 2
Then
v = v / w
TextBox1.Text = v
End If
If h = 3
Then
v = v + w
TextBox1.Text = v
End If
If h = 4
Then
v = v - w
TextBox1.Text = v
End
If
Else
v = v + w
b = 1
End If
h = 4
w =
0
k = 0
a = 0
End Sub
Private
Sub CommandButton17_Click()
If h = 1 Then
v = v *
w
TextBox1.Text = v
End If
If h = 2 Then
v = v /
w
TextBox1.Text = v
End If
If h = 3 Then
v = v +
w
TextBox1.Text = v
End If
If h = 4 Then
v = v -
w
TextBox1.Text = v
End If
w = 0
k = 0
a = 0
b = 0
End Sub
解説
まず、h As Byteの役割から説明しましょう。
それはCommandButton17_Click()を見ていただければわかります。
h = 1 のときはかけ算、h = 2 のときは割り算、h = 3 のときは足し算、h = 4 のときは引き算
の役割が与えられていることがわかります。
=の直前にどのキーが押されたかによって、処理を変えなけれなりませんので、
hが必要なわけです。
次に、v As Doubleの役割は何でしょうか。
wの保存です。
保存であるならば、v = v + wはv = wでよいのではないでしょうか。
答えは30行下。
だめです。ただの保存ではなく累積保存であるからです。
例えば、次のように押したときは
2→+→5→=→+3→=と押したときは、答えは10でなければなりませんね。
そうするためには、今までの結果を累積しておく必要があるのです。
今回作った電卓は、非常に単純なものです。次講では、電卓の高度化を考えましょう。
尚、変更点の解説は次話で。
第9話へ 第11話へ
VBA講義第1部へ
vc++講義へ
vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
数学研究室に戻る