ExcelVBA・簡易電卓

## 簡易電卓作成
* Excel　VBAを用いての電卓作成


## 事前準備
* 電卓フォーマット作成
<img width="387" alt="スクリーンショット 2017-05-09 9.51.31.png" src="https://qiita-image-store.s3.amazonaws.com/0/180390/39218bbf-162c-c83b-7a7c-05507af4021b.png">

## 今回の狙い
* VBAを用いて、アルゴリズムに関して理解を深める
* else/else ifの使い分けの理解
* 初心者向けの勉強法
* 新卒向け勉強課題

## コーディング
```

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

```


## コーディング詳細はコメントアウトをご確認下さい。