EXCEL VBA イベントプロシージャで消費税計算・データ入力後のタイムスタンプ表示・自動計算・自動表示(テクニック)

 

EXCEL VBA イベントプロシージャで消費税計算・データ入力後のタイムスタンプ表示・自動計算・自動表示(テクニック)

 

●はじめに

通常業務で請求金額や支払金額に応じて消費税の計算を行いますが、EXCELで消費税を計算するには、直接セルに計算式を入力して計算を求めると思いますが、その場合、誤って計算式を削除してしまうと、再度、計算式を入力する必要があります。また、セルに直接計算式を記入すると消費税額が変わった場合や変更したい時に、全てのセルに対して計算式を変更する必要があります。ここで説明するサンプルプログラムは、イベントプロシージャを利用した自動計算で消費税を計算するサンプルプログラムです。

【説明】イベントプロシージャとは、特定な動作によって処理を実行する事です。
EXCELで例えると、シートをクリック・セルの値を変更・・などがあげられます。

 

EXCEL VBA イベントプロシージャで消費税計算・セル入力後、自動計算(セルの値変更で消費税計算)Worksheet_Change

 

 

●プログラム説明 (サンプル①)  Worksheet_Change

下記のサンプルプログラムは、イベントプロシージャ(セルの値変更)を利用して入力後に消費税を自動計算するサンプルプログラムです。

【プログラムの詳細説明】
①請求金額の税抜き金額を入力します。
②税抜き金額を入力後、【C列】に変更があると、セルの値変更のイベントプロシージャが動作して消費税計算・合計計算を実行する。
③計算処理(セル(D列消費税:E列に合計) に計算結果が代入される。


'******* AKIRA55.COM ****** https://akira55.com/events_tax

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim ws01 As Worksheet
    Dim X, Y As Long
    Dim TAX As String
    
    Set ws01 = Worksheets("消費税計算")  'ワークシート名を「消費税計算」


    X = Target.Column    '入力後の位置(列を把握):数字で代入
    Y = Target.Row       '入力後の位置(行を把握):数字で代入
    
        

    '----------------------------請求先 計算-----------------------------------
    
    If X = 3 Or X = 6 Then    '税抜(列:X=3)と税区分(列:X=6)の列を変更した場合、下記の処理を行います。
        
        TAX = ws01.Cells(Y, "F")  '税区分の値を取得
        
        Select Case TAX
            Case "8"
                        ws01.Cells(Y, "D") = Int(ws01.Cells(Y, "C") * 0.08) '消費税8%
                        ws01.Cells(Y, "E") = Int(ws01.Cells(Y, "C") + ws01.Cells(Y, "D")) '合計
            Case "非"
                        ws01.Cells(Y, "D") = 0 '非課税
                        ws01.Cells(Y, "E") = Int(ws01.Cells(Y, "C") + ws01.Cells(Y, "D")) '合計
            Case Else
                        ws01.Cells(Y, "D") = Int(ws01.Cells(Y, "C") * 0.1) '消費税10%
                        ws01.Cells(Y, "E") = Int(ws01.Cells(Y, "C") + ws01.Cells(Y, "D")) '合計
         End Select
    End If
    

End Sub

 

●実行前~実行後 ※プログラム実行後、セル「C列」の税抜金額に金額を入力すると、F列の「税区分」により、消費税の計算と合計額を自動計算します。なお、F列の税区分を変更しても消費税・合計額を再計算(自動計算)されます。

 

 

EXCEL VBA 一連のデータ入力をにイベントプロシージャを使い入力後のタイムスタンプを自動的に表示させる。Worksheet_Change

 

●プログラム説明  (サンプル②) Worksheet_Change
下記のサンプルプログラムは、イベントプロシージャ(セルの値変更)を利用して、一連のデータを入力後に、タイムスタンプを表示するサンプルプログラムです。
【プログラムの詳細説明】
①行単位で一連のデータを全て入力します(A列からF列)
②A列からF列まで、全てセルにデータが入力されると(G列)にタイムスタンプが表示されます。
③なお、訂正後も訂正入力後のタイムスタンプが表示されます。
※1行目「見出し行」については、セル(データ)を変更しても何もしません。

 

'******* AKIRA55.COM ****** https://akira55.com/events_tax

Private Sub Worksheet_Change(ByVal Target As Range) 'イベントプロシージャ―で消費税計算

    Dim ws02 As Worksheet
    Dim X, Y, Kazu As Long
    Dim Moji As Range
    
    Set ws02 = Worksheets("住所録台帳")  'ワークシート名を「消費税計算」

    Y = Target.Row          '入力後の位置(行を把握):数字(行番号)で代入
            
    Kazu = 0
    
    If Y > 1 Then
        For Each Moji In ws02.Range("A" & Y & ":F" & Y)  'データ入力後にA列~F列までの間のデータが全て入力されたか確認します。
        
            If Len(Moji) <> 0 Then    '入力した行のA列からF列の文字が入力されているか判定します。
                Kazu = Kazu + 1      'セルに文字が入力されていると+1加算します。
                
                If Kazu = 6 Then      'A列からF列の間、文字が全て入力されていると「Kazu=6」となり、タイムスタンプが表示されます。
                    ws02.Cells(Y, "G") = Now '現在の日時を”G列に表示します「タイムスタンプ」
                End If
                
            End If
        
        Next Moji
    End If

End Sub

 

 

●実行前~実行後  ※プログラム実行後、上から3行については、全てがデータが入力されたので、入力後に「登録日時」が表示(自動)されました。

 

 

 

最後まで、ご覧いただきまして誠に有難うございました。
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。

 

AKIRA