'変数の宣言
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 cmdclear_Click()
    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 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
 
'eflagが0のときは、atai1に入力。
'eflagが1のときは、atai2に入力。
 
Private Sub lbl0_Click()
    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()
    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()
    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()
    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()
    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()
    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()
    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()
    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()
    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()
    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()
    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()
 
    '小数点入力済みフラグがオンの場合、プロージャから外に出る。
    If sflag = 1 Then
        Exit Sub
    End If
 
    txtinput.Text = txtinput.Text + "."
    sflag = 1
 
End Sub