3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ExcelVBA・簡易電卓

Posted at

簡易電卓作成

  • Excel VBAを用いての電卓作成

事前準備

  • 電卓フォーマット作成
スクリーンショット 2017-05-09 9.51.31.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

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

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?