電卓数字ボタン [VB]

VB2012-2017

数字ボタンクリック処理

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

電卓画面

簡易電卓プログラムの仕様はこちら

サンプルプログラム

まず、変数(わかりやすい変数名にすること)を宣言して、初期値を設定する。プログラム実行時の電卓には、0と表示されるようにします。これはクリアボタンをクリックした直後の状態と同じです。

フォームクラスに Private変数を次のように宣言します。Private変数にすると、各Sub関数内からいつでも変数を見たり、変更することができます。

'////////// 整数加算の簡単電卓画面クラス //////////
Public Class Form1

    '----------<< 変数宣言 >>----------
    ' 今回押されたボタンの数字以外の値(+,=,C)を保存する変数
    Private ope As String = Nothing

    ' 今回押されたボタンの値(1,2,3,+,=,C)を保存する変数
    Private beforeIn As String = "C"

    ' 演算結果を保存する変数
    Private ans As Long = 0

    ' 今回入力された数値を保存する変数
    Private num As Long = 0

    .....(以下省略).....

次に、フォームの 数字1ボタン(BtnOne)をダブルクリックして、BtnOneボタンのクリック処理を記述します。

  • BtnOneのクリック処理は、直前に押されたボタンが数字なら、LblAnserのTextプロパティの末尾に、"1"を追加します。LblAnser.Text &= "1"(LblAnser.Text = LblAnser.Text & "1" と記述しても同じ)とします。
  • ただし、入力数値の桁数が8桁になったら、それ以上は追加しません。
  • 直前に押されたボタンが数字以外なら、LblAnserのTextプロパティに、"1"を代入します。
  • 今回押されたボタンが何なのか分かるように、beforeIn = "1"で、beforeIn変数に入力値を保存しておきます。beforeIn変数の値を調べることにより、数字入力中か否かを判定して、LblAnserに表示する文字列を生成していきます。
  ' 数字1ボタンクリック処理
  Private Sub BtnOne_Click(sender As Object, e As EventArgs) Handles BtnOne.Click

      If beforeIn >= "1" And beforeIn <= "3" Then
          ' 直前の押されたのが数字ボタンのとき
          ' かつ、8桁未満の数値が入力されているとき
          If LblAnser.Text.Length < 8 Then
              LblAnser.Text &= "1"
          End If
      Else
          ' 直前の押されたのが数字以外のボタンのとき
          LblAnser.Text = "1"
      End If
      beforeIn = "1"

  End Sub

同様に、BtnTwoボタンのクリック処理を作成します。

  ' 数字2ボタンクリック処理
  Private Sub BtnTwo_Click(sender As Object, e As EventArgs) Handles BtnTwo.Click

      If beforeIn >= "1" And beforeIn <= "3" Then
          If LblAnser.Text.Length < 8 Then
              LblAnser.Text &= "2"
          End If
      Else
          LblAnser.Text = "2"
      End If
      beforeIn = "2"

  End Sub

BtnThreeボタンのクリック処理も同様に作成します。

  ' 数字3ボタンクリック処理
  Private Sub BtnThree_Click(sender As Object, e As EventArgs) Handles BtnThree.Click

      If beforeIn >= "1" And beforeIn <= "3" Then
          If LblAnser.Text.Length < 8 Then
              LblAnser.Text &= "3"
          End If
      Else
          LblAnser.Text = "3"
      End If
      beforeIn = "3"

  End Sub