第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 + wv = wでよいのではないでしょうか。
答えは30行下。


















だめです。ただの保存ではなく累積保存であるからです。
例えば、次のように押したときは
2→+→5→=→+3→=と押したときは、答えは10でなければなりませんね。
そうするためには、今までの結果を累積しておく必要があるのです。

今回作った電卓は、非常に単純なものです。次講では、電卓の高度化を考えましょう。

尚、変更点の解説は次話で。


第9話へ 第11話へ

004
  

VBA講義第1部へ
vc++講義へ
vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ

数学研究室に戻る