'変数の宣言
Private atai1 As Double         '被演算数
Private atai2 As Double         '演算数
Private enzanshi As Integer     '演算子 0:たす 1:ひく 2:かける 3:わる
Private kotae As Double         '答え
Private eflag As Integer        '演算子が押されたことを示すフラグ 1:ON 0:OFF
Private data As Double          'txtinput.Textの値を保持する入れ物
Private rflag As Integer        '次回表示リセットフラグ 1:ON 0:OFF
Private mflag1 As Integer       'マイナス符号フラグ -1:マイナス 1:プラス
Private mflag2 As Integer       '前回の入力の符号 -1:マイナス 1:プラス
Private sflag As Integer        '小数点入力済みフラグ 1:ON 0:OFF
 
Private Sub cmdAC_Click()
'オールクリア(AC)ボタン押下時
    '入力済みの数値データクリア
    '下限乗除の業務クリア
    '入力中の数値データクリア
 
End Sub
 
Private Sub cmdclear_Click()
'クリア(C)ボタン押下時
    '入力中の数値データをクリア
    '0を表示
 
    mflag1 = 1  '1:オフ
    mflag2 = 1  '1:オフ
    txtinput.Text = 0
    data = Val(txtinput.Text)
    atai1 = 0
    atai2 = 0
End Sub
 
Private Sub cmdkotae_Click()
'=キー。計算結果表示
 
    mflag1 = 1  '1:オフ
    mflag2 = 1  '1:オフ
    atai2 = data
    Keisan
    data = 0
    rflag = 1
End Sub
 
Private Sub cmdM_Click()
'メモリボタン押下時。
    'メモリに記憶。
 
End Sub
 
Private Sub cmdMC_Click()
'メモリクリアボタン押下時
    'メモリに記憶されている数値を消去
 
End Sub
 
Private Sub cmdMhiku_Click()
'メモリマイナスボタン押下時
    '電卓に表示されている数値をメモリから減算する
 
End Sub
 
Private Sub cmdMR_Click()
'メモリリードボタン押下時
    'メモリに記憶されている数値を表示
 
End Sub
 
Private Sub cmdMtasu_Click()
'メモリプラスボタン押下時
    '電卓に表示されている数値をメモリに加算する
 
End Sub
 
Private Sub cmdtasu_Click()
'+ボタン押下時
    '加算
 
    mflag1 = 1  '1:オフ
    mflag2 = 1  '1:オフ
    enzanshi = 0
    atai1 = data
    eflag = 1
    data = 0
    rflag = 1
End Sub
 
Private Sub cmdhiku_Click()
'−ボタン押下時
 
'マイナス入力のとき
    '符号をマイナスにする
 
    If txtinput.Text = 0 Then
        mflag1 = -1
        txtinput.Text = "-"
    Else
    mflag1 = 1  '1:オフ
    mflag2 = 1  '1:オフ
    End If
'数値計算のとき
    '減算
 
    enzanshi = 1
    atai1 = data
    eflag = 1
    data = 0
    rflag = 1
End Sub
 
Private Sub cmdkakeru_Click()
'×ボタン押下時
    '乗算
 
    mflag1 = 1  '1:オフ
    mflag2 = 1  '1:オフ
    enzanshi = 2
    atai1 = data
    eflag = 1
    data = 0
    rflag = 1
End Sub
 
Private Sub cmdwaru_Click()
'÷ボタン押下時
    '除算
 
    mflag1 = 1  '1:オフ
    mflag2 = 1  '1:オフ
    enzanshi = 3
    atai1 = data
    eflag = 1
    data = 0
    rflag = 1
End Sub
 
Private Sub Form_Load()
    'フォームロード時
    'フラグを初期値オフに設定
    rflag = 0
    mflag1 = 1
    mflag2 = 1
    sflag = 0
End Sub
 
Private Sub lbl0_Click()
'0キー入力時
    '10倍した数値を表示
 
    If rflag = 1 Then
        txtinput.Text = 0
        rflag = 0
    End If
    If mflag1 = -1 Then
        txtinput.Text = -1 * 0
        mflag1 = 1
        data = Val(txtinput.Text)
        mflag2 = -1
        Exit Sub
    End If
    If sflag = 1 Then
        'テキストを×10して、二桁目を.(ドット)にして、
        '一桁目に入力値を入れる。
 
        '小数点以下を小数点以下を保存するバッファに入れる
        '小数点以下何桁かを保持
    Else
        txtinput.Text = (txtinput.Text * 10) + (mflag2 * 0)
        data = Val(txtinput.Text)
        If eflag = 0 Then
        atai1 = data
        ElseIf eflag = 1 Then
            atai2 = data
        End If
    End If
End Sub
 
Private Sub lbl00_Click()
'00キー入力時
    '100倍した数値を表示
 
    If rflag = 1 Then
        txtinput.Text = 0
        rflag = 0
    End If
    If mflag1 = -1 Then
        txtinput.Text = -1 * 0
        mflag1 = 1
        data = Val(txtinput.Text)
        mflag2 = -1
        Exit Sub
    End If
    txtinput.Text = txtinput.Text * 100
    data = Val(txtinput.Text)
    If eflag = 0 Then
        atai1 = data
    ElseIf eflag = 1 Then
        atai2 = data
    End If
End Sub
 
Private Sub lbl1_Click()
'1キー入力時
    '表示されている数値を10倍し、
    '1桁目に"1"を出力
 
    If rflag = 1 Then
        txtinput.Text = 0
        rflag = 0
    End If
    If mflag1 = -1 Then
        txtinput.Text = -1 * 1
        mflag1 = 1
        data = Val(txtinput.Text)
        mflag2 = -1
        Exit Sub
    End If
    txtinput.Text = txtinput.Text * 10 + (mflag2 * 1)
    data = Val(txtinput.Text)
    If eflag = 0 Then
        atai1 = data
    ElseIf eflag = 1 Then
        atai2 = data
    End If
End Sub
 
Private Sub lbl2_Click()
'2キー入力時
    '表示されている数値を10倍し、
    '1桁目に"2"を出力
 
    If rflag = 1 Then
        txtinput.Text = 0
        rflag = 0
    End If
    If mflag1 = -1 Then
        txtinput.Text = -1 * 2
        mflag1 = 1
        data = Val(txtinput.Text)
        mflag2 = -1
        Exit Sub
    End If
    txtinput.Text = txtinput.Text * 10 + (mflag2 * 2)
    data = Val(txtinput.Text)
    If eflag = 0 Then
        atai1 = data
    ElseIf eflag = 1 Then
        atai2 = data
    End If
End Sub
 
Private Sub lbl3_Click()
'3キー入力時
    '表示されている数値を10倍し、
    '1桁目に"3"を出力
 
    If rflag = 1 Then
        txtinput.Text = 0
        rflag = 0
    End If
    If mflag1 = -1 Then
        txtinput.Text = -1 * 3
        mflag1 = 1
        data = Val(txtinput.Text)
        mflag2 = -1
        Exit Sub
    End If
    txtinput.Text = txtinput.Text * 10 + mflag2 * 3
    data = Val(txtinput.Text)
    If eflag = 0 Then
        atai1 = data
    ElseIf eflag = 1 Then
        atai2 = data
    End If
End Sub
 
Private Sub lbl4_Click()
'4キー入力時
    '表示されている数値を10倍し、
    '1桁目に"4"を出力
 
    If rflag = 1 Then
        txtinput.Text = 0
        rflag = 0
    End If
    If mflag1 = -1 Then
        txtinput.Text = -1 * 4
        mflag1 = 1
        data = Val(txtinput.Text)
        mflag2 = -1
        Exit Sub
    End If
    txtinput.Text = txtinput.Text * 10 + (mflag2 * 4)
    data = Val(txtinput.Text)
    If eflag = 0 Then
        atai1 = data
    ElseIf eflag = 1 Then
        atai2 = data
    End If
End Sub
 
Private Sub lbl5_Click()
'5キー入力時
    '表示されている数値を10倍し、
    '1桁目に"5"を出力
 
    If rflag = 1 Then
        txtinput.Text = 0
        rflag = 0
    End If
    If mflag1 = -1 Then
        txtinput.Text = -1 * 5
        mflag1 = 1
        data = Val(txtinput.Text)
        mflag2 = -1
        Exit Sub
    End If
    txtinput.Text = txtinput.Text * 10 + (mflag2 * 5)
    data = Val(txtinput.Text)
    If eflag = 0 Then
        atai1 = data
    ElseIf eflag = 1 Then
        atai2 = data
    End If
End Sub
 
Private Sub lbl6_Click()
'6キー入力時
    '表示されている数値を10倍し、
    '1桁目に"6"を出力
 
    If rflag = 1 Then
        txtinput.Text = 0
        rflag = 0
    End If
    If mflag1 = -1 Then
        txtinput.Text = -1 * 6
        mflag1 = 1
        data = Val(txtinput.Text)
        mflag2 = -1
        Exit Sub
    End If
    txtinput.Text = txtinput.Text * 10 + (mflag2 * 6)
    data = Val(txtinput.Text)
    If eflag = 0 Then
        atai1 = data
    ElseIf eflag = 1 Then
        atai2 = data
    End If
End Sub
 
Private Sub lbl7_Click()
'7キー入力時
    '表示されている数値を10倍し、
    '1桁目に"7"を出力
 
    If rflag = 1 Then
        txtinput.Text = 0
        rflag = 0
    End If
    If mflag1 = -1 Then
        txtinput.Text = -1 * 7
        mflag1 = 1
        data = Val(txtinput.Text)
        mflag2 = -1
        Exit Sub
    End If
    txtinput.Text = txtinput.Text * 10 + (mflag2 * 7)
    data = Val(txtinput.Text)
    If eflag = 0 Then
        atai1 = data
    ElseIf eflag = 1 Then
        atai2 = data
    End If
End Sub
 
Private Sub lbl8_Click()
'8キー入力時
    '表示されている数値を10倍し、
    '1桁目に"8"を出力
 
    If rflag = 1 Then
        txtinput.Text = 0
        rflag = 0
    End If
    If mflag1 = -1 Then
        txtinput.Text = -1 * 8
        mflag1 = 1
        data = Val(txtinput.Text)
        mflag2 = -1
        Exit Sub
    End If
    txtinput.Text = txtinput.Text * 10 + (mflag2 * 8)
    data = Val(txtinput.Text)
    If eflag = 0 Then
        atai1 = data
    ElseIf eflag = 1 Then
        atai2 = data
    End If
End Sub
 
Private Sub lbl9_Click()
'9キー入力時
    '表示されている数値を10倍し、
    '1桁目に"9"を出力
 
    If rflag = 1 Then
        txtinput.Text = 0
        rflag = 0
    End If
    If mflag1 = -1 Then
        txtinput.Text = -1 * 9
        mflag1 = 1
        data = Val(txtinput.Text)
        mflag2 = -1
        Exit Sub
    End If
    txtinput.Text = txtinput.Text * 10 + (mflag2 * 9)
    data = Val(txtinput.Text)
    If eflag = 0 Then
        atai1 = data
    ElseIf eflag = 1 Then
        atai2 = data
    End If
End Sub
 
Sub Keisan()
'計算関数
    '加減乗除の計算をします。
 
    'eflagが0の場合、atai1を表示します。
    If eflag = 0 Then
        kotae = atai1
    ElseIf eflag = 1 Then
    'eflagが1の場合、計算結果を表示します。
        Select Case enzanshi
            Case 0
                kotae = atai1 + atai2
            Case 1
                kotae = atai1 - atai2
            Case 2
                kotae = atai1 * atai2
            Case 3
                kotae = atai1 / atai2
        End Select
    End If
    txtinput.Text = kotae
    eflag = 0
End Sub
 
Private Sub lbldot_Click()
'小数点(.)ボタン押下時
    '表示されている数値を一桁左にずらし、」
    '小数点を1桁目に表示
 
    '小数点入力済みフラグがオンの場合、プロージャから外に出る。
    If sflag = 1 Then
        Exit Sub
    End If
 
    txtinput.Text = txtinput.Text + "."
    sflag = 1
 
End Sub