Dim ans As Double
Dim add, subtra, mul, div As Boolean '演算子押下時にフラグをflagとして使用
Dim flag As Boolean '新規入力フラグ
'0押下時
Sub b0_Click()
    
    '新規入力フラグがfalseだった場合
    If flag = False Then
        
        '出力欄が"0"以外の時
        If Range("D4") <> "0" Then
        
            '表示する文字数を制限
            If Len(Range("D4")) < 12 Then
                
                Range("D4") = Range("D4") & "0"
            
            End If
        
        End If
            
    '新規入力フラグがtrueの時だった場合
    
    Else
        
        Range("D4") = "0"
        
        flag = False
    
    End If
                
End Sub
'1押下時
Sub b1_Click()
    
    '新規入力フラグがfalseだった場合
    If flag = False Then
        
        '出力欄が"0"以外の時
        If Range("D4") <> "0" Then
        
            '表示する文字数を制限
            If Len(Range("D4")) < 12 Then
                
                Range("D4") = Range("D4") & "1"
            
            End If
        
        End If
            
    '新規入力フラグがtrueの時だった場合
    
    Else
        
        Range("D4") = "1"
        
        flag = False
    
    End If
                
End Sub
'2押下時
Sub b2_Click()
    
    '新規入力フラグがfalseだった場合
    If flag = False Then
        
        '出力欄が"0"以外の時
        If Range("D4") <> "0" Then
        
            '表示する文字数を制限
            If Len(Range("D4")) < 12 Then
                
                Range("D4") = Range("D4") & "2"
            
            End If
        
        End If
            
    '新規入力フラグがtrueの時だった場合
    
    Else
        
        Range("D4") = "2"
        
        flag = False
    
    End If
                
End Sub
'3押下時
Sub b3_Click()
    
    '新規入力フラグがfalseだった場合
    If flag = False Then
        
        '出力欄が"0"以外の時
        If Range("D4") <> "0" Then
        
            '表示する文字数を制限
            If Len(Range("D4")) < 12 Then
                
                Range("D4") = Range("D4") & "3"
            
            End If
        
        End If
            
    '新規入力フラグがtrueの時だった場合
    
    Else
        
        Range("D4") = "3"
        
        flag = False
    
    End If
                
End Sub
'4押下時
Sub b4_Click()
    
    '新規入力フラグがfalseだった場合
    If flag = False Then
        
        '出力欄が"0"以外の時
        If Range("D4") <> "0" Then
        
            '表示する文字数を制限
            If Len(Range("D4")) < 12 Then
                
                Range("D4") = Range("D4") & "1"
            
            End If
        
        End If
            
    '新規入力フラグがtrueの時だった場合
    
    Else
        
        Range("D4") = "1"
        
        flag = False
    
    End If
                
End Sub
'5押下時
Sub b5_Click()
    
    '新規入力フラグがfalseだった場合
    If flag = False Then
        
        '出力欄が"0"以外の時
        If Range("D4") <> "0" Then
        
            '表示する文字数を制限
            If Len(Range("D4")) < 12 Then
                
                Range("D4") = Range("D4") & "5"
            
            End If
        
        End If
            
    '新規入力フラグがtrueの時だった場合
    
    Else
        
        Range("D4") = "5"
        
        flag = False
    
    End If
                
End Sub
'6押下時
Sub b6_Click()
    
    '新規入力フラグがfalseだった場合
    If flag = False Then
        
        '出力欄が"0"以外の時
        If Range("D4") <> "0" Then
        
            '表示する文字数を制限
            If Len(Range("D4")) < 12 Then
                
                Range("D4") = Range("D4") & "6"
            
            End If
        
        End If
            
    '新規入力フラグがtrueの時だった場合
    
    Else
        
        Range("D4") = "6"
        
        flag = False
    
    End If
                
End Sub
'7押下時
Sub b7_Click()
    
    '新規入力フラグがfalseだった場合
    If flag = False Then
        
        '出力欄が"0"以外の時
        If Range("D4") <> "0" Then
        
            '表示する文字数を制限
            If Len(Range("D4")) < 12 Then
                
                Range("D4") = Range("D4") & "7"
            
            End If
        
        End If
            
    '新規入力フラグがtrueの時だった場合
    
    Else
        
        Range("D4") = "7"
        
        flag = False
    
    End If
                
End Sub
'8押下時
Sub b8_Click()
    
    '新規入力フラグがfalseだった場合
    If flag = False Then
        
        '出力欄が"0"以外の時
        If Range("D4") <> "0" Then
        
            '表示する文字数を制限
            If Len(Range("D4")) < 12 Then
                
                Range("D4") = Range("D4") & "8"
            
            End If
        
        End If
            
    '新規入力フラグがtrueの時だった場合
    
    Else
        
        Range("D4") = "8"
        
        flag = False
    
    End If
                
End Sub
'9押下時
Sub b9_Click()
    
    '新規入力フラグがfalseだった場合
    If flag = False Then
        
        '出力欄が"0"以外の時
        If Range("D4") <> "0" Then
        
            '表示する文字数を制限
            If Len(Range("D4")) < 12 Then
                
                Range("D4") = Range("D4") & "9"
            
            End If
        
        End If
            
    '新規入力フラグがtrueの時だった場合
    
    Else
        
        Range("D4") = "9"
        
        flag = False
    
    End If
                
End Sub
'AC押下時
Sub AC_Click()
    
    div = False
    mul = False
    subtra = False
    add = False
                
    ans = 0
    flag = True
    Range("D4") = "0"
                                   
End Sub
'C押下時
Sub C_Click()
    
    If flag = False Then
        Range("D4") = "0"
        flag = True
    End If
    
End Sub
Sub answer()
    If flag = False Then
    
        If div = True Then
            ans = ans / Range("D4")
            
        ElseIf mul = True Then
            ans = ans * Range("D4")
            
        ElseIf subtra = True Then
            ans = ans - Range("D4")
            
        ElseIf add = True Then
            ans = ans + Range("D4")
            
        Else
            ans = Range("D4")
        End If
        Range("D4") = ans
        
        flag = True
                                
    End If
    
    div = False
    mul = False
    subtra = False
    add = False
    
    Range("D4") = ans
End Sub
Sub addition()
If flag = False Then
        
        If div = True Then
            ans = ans / Range("D4")
            
        ElseIf mul = True Then
            ans = ans * Range("D4")
            
        ElseIf subtra = True Then
            ans = ans - Range("D4")
            
        ElseIf add = True Then
            ans = ans + Range("D4")
            
        Else
        
            ans = Range("D4")
            
        End If
        Range("D4") = ans
        
        flag = True
                                
    End If
    
    div = False
    
    mul = False
    
    subtra = False
    
    add = True
                            
End Sub
Sub subtraction()
    
    If flag = False Then
        
        If div = True Then
            ans = ans / Range("D4")
            
        ElseIf mul = True Then
            ans = ans * Range("D4")
            
        ElseIf subtra = True Then
            ans = ans - Range("D4")
            
        ElseIf add = True Then
            ans = ans + Range("D4")
            
        Else
        
            ans = Range("D4")
            
        End If
        Range("D4") = ans
        
        flag = True
                                
    End If
    
    div = False
    
    mul = False
    
    subtra = True
    
    add = False
                            
End Sub
Sub multiplication()
    
    If flag = False Then
        
        If div = True Then
            ans = ans / Range("D4")
            
        ElseIf mul = True Then
            ans = ans * Range("D4")
            
        ElseIf subtra = True Then
            ans = ans - Range("D4")
            
        ElseIf add = True Then
            ans = ans + Range("D4")
            
        Else
        
            ans = Range("D4")
            
        End If
        Range("D4") = ans
        
        flag = True
                                
    End If
    
    div = False
    
    mul = True
    
    subtra = False
    
    add = False
End Sub
Sub division()
    
    If flag = False Then
        
        If div = True Then
            ans = ans / Range("D4")
            
        ElseIf mul = True Then
            ans = ans * Range("D4")
            
        ElseIf subtra = True Then
            ans = ans - Range("D4")
            
        ElseIf add = True Then
            ans = ans + Range("D4")
            
        Else
        
            ans = Range("D4")
            
        End If
        Range("D4") = ans
        
        flag = True
                                
    End If
    
    div = True
    
    mul = False
    
    subtra = False
    
    add = False
                            
End Sub