LoginSignup
3
3

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