やさしい電卓機能ボタン [VB]

VB2012-2017

機能ボタンクリック処理

数字1ボタン、数字2ボタン、数字3ボタン、+ボタン、Cボタン、=ボタンのみを使った簡易電卓プログラムの +ボタン、=ボタン、Cボタンのクリック処理プログラムを作成します。

電卓画面

サンプルプログラム

+ボタンクリック処理

+ボタンがクリックされた時は、前回クリックされたボタンにより、表示結果が異なります。

  • 前回押されたボタンが数字ならば、前回の数字が初回入力数字(opeに"C"が保存されている)ならば、現在表示中の数字をそのまま表示します。
  • 前回押されたボタンが数字以外ならば、それまでの計算結果に、今回入力した数値を加算し、その結果を表示します。
  • Textプロパティは文字列なので、演算するときは、CInt関数で整数に変換する必要があります。変換してnum変数に保存しておきます。
  • num = CInt(LblAnser.Text)
  • 前回押されたのが数字以外ならば、クリックされたボタンに応じた演算をします。演算は、Windowsアクセサリーの電卓と同様な結果になるようにしました。
' +ボタンクリック処理
Private Sub BtnPlus_Click(sender As Object, e As EventArgs) Handles BtnPlus.Click

    If beforeIn >= "1" And beforeIn <= "3" Then
        If ope = "C" Then
            ' 最初の入力数値をansに保管
            ans = CInt(LblAnser.Text)
        Else
            ' ansに保管されている
            ' +ボタンクリック前の数値と加算
            num = CInt(LblAnser.Text)
            ans = ans + num
            LblAnser.Text = ans
        End If
    Else
        ' 前回クリックが数字以外の時
        Select Case ope
            Case "C"
                ' 前回がクリアボタン
                ans = CInt(LblAnser.Text)
            Case "="
                ' 前回がイコールボタン
                ans = ans + num
            Case "+"
                num = ans
        End Select
    End If
    beforeIn = "+"
    ope = "+"

End Sub

=ボタンクリック処理

=ボタンがクリックされた時は、前回クリックされたボタンが数字ならば、今回入力の数字を整数に変換します。

  • それまでの計算結果と今回入力した数値を使って、直前にクリックされた演算ボタンの計算を実行します。演算ボタンの値はope変数に保存されています。
  • このプログラムでは、足し算ボタンしかないので足し算を実行することになります。
  • beforeIn = "C"として、新たな演算に備えます。
  • ただし、現在保存中の値はそのまま使うので、初期値には戻しません。
' =ボタンクリック処理
Private Sub BtnEqual_Click(sender As Object, e As EventArgs) Handles BtnEqual.Click

    If beforeIn >= "1" And beforeIn <= "3" Then
        num = CInt(LblAnser.Text)
    End If
    ' 演算子を判定して処理を振分
    Select Case ope
        Case "+"
            ans = ans + num
        Case "-"
            ' 今回は省略
        Case "*"
            ' 今回は省略
        Case "/"
            ' 今回は省略
    End Select
    LblAnser.Text = ans
    beforeIn = "C"

End Sub

Cボタンクリック処理

C(クリア)ボタンを押した時は、電卓を初期状態に戻します。

' Cボタンクリック処理
Private Sub BtnClear_Click(sender As Object, e As EventArgs) Handles BtnClear.Click

    ans = 0
    num = 0
    beforeIn = "C"
    ope = "C"
    LblAnser.Text = "0"

End Sub