'変数の宣言
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 Long            '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 leftdata1 As Long       '被演算数の小数点から左部分を保持するバッファ。
Private leftdata2 As Long       '演算数の小数点から左部分を保持するバッファ。
Private rightdata1 As Long      '被演算数の小数点から右部分を保持するバッファ。
Private rightdata2 As Long      '演算数の小数点から右部分を保持するバッファ。
 
Private tendata1 As Integer     '被演算数の小数点が右から何桁目かを入れておく変数。
Private tendata2 As Integer     '演算数の小数点が右から何桁目かを入れておく変数。
 
 
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()
    'フォームロード時
    'フラグを初期値オフに設定
    eflag = 0
    rflag = 0
    mflag1 = 1
    mflag2 = 1
    sflag = 0
    '小数点以下何桁かを示すフラグに初期値0を代入
    tendata1 = 0
    tendata2 = 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
        '小数点入力済みフラグがオンのとき
        'データに加算:(0.1の倍数of"小数点以下+1桁")×入力値
        '(例:小数点以下2桁の場合は、入力値÷100)
        'データを表示する
 
        '小数点以下を小数点以下を保存するバッファに入れる
 
        '小数点以下何桁かを保持
 
    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