'変数の宣言
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
        '小数点入力済みフラグがオンのとき
        '小数点より右部分を保持するバッファに入力
            '演算子入力前:rightdata1
            '演算子入力後:rightdata2
        '小数点以下何桁目までかを保持するバッファに入力
            '演算子入力前:tendata1
            '演算子入力後:terndata2
        'データを表示する
 
    ElseIf sflag = 0 Then
        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