2019年10月より消費税が10%に引き上げられましたね!

自営業や個人事業主の人はエクセルを使って見積書や請求書を作成している人が多いと思いますが、エクセルの場合、消費税は数式の一部として直接セルに指定されていることがほとんど。

そのため消費税が変わるたびに、すべてのシートの数式を手作業で修正するという非常に面倒な作業が発生してしまいます。

[st-kaiwa1]アクセスなら消費税を管理するテーブルに新しい消費税を追加するだけで、今日の日付に該当する消費税を自動的に取得することができますよ。[/st-kaiwa1]

消費税10%の計算結果

そこで今回は、実際に消費税を管理するテーブルと、計算結果を表示するフォームを作成。
VBAを使って消費税を自動取得する方法をお伝えします。

この考え方が分かれば、アクセスで作成する請求書や見積書に実装するのもカンタンです。
ぜひ参考にしてみて下さい。

アクセスで消費税を自動取得する手順

今回の消費税自動取得で必要となるのはつぎの3つです。

  1. 消費税を管理するテーブル
  2. テーブルより税率を取得するVBA
  3. 計算結果を表示するフォーム

消費税を管理するテーブルを作成する

まずは消費税を管理するテーブルを定義します。
テーブル名は、「T_消費税」とします。

syohizei_tbl

消費税を格納する「税率」は数値型、適用範囲を定義する「適用from」と「適用to」は日付/時刻型を設定しましょう。

なお「税率」には小数点以下を格納するので、フィールドサイズに「倍精度浮動小数点型」、小数点以下表示桁数に2を設定します。

syohizei_tbl
[st-minihukidashi fontawesome=”” fontsize=”80″ fontweight=”” bgcolor=”#3F51B5″ color=”#fff” margin=”0 0 0 -6px”]ココがポイント[/st-minihukidashi]

[st-cmemo fontawesome=”fa-hand-o-right” iconcolor=”#3F51B5″ bgcolor=”#E8EAF6″ color=”#000000″ iconsize=”200″]「単精度浮動小数点型」だと、消費税の計算結果が1円ズレることがあります。必ず「倍精度浮動小数点型」を指定して下さい。[/st-cmemo]

作成した「T_消費税」にデータを格納する

消費税テーブル

消費税8%のレコードと消費税10%のレコードを格納します。
それぞれに対して、適用開始日と適用終了日の日付も設定します。

消費税10%がいつまで続くか分からないので、10%の「適用to」には暫定の未来日付を設定しておきましょう。

消費税を計算するフォームを作成する

消費税を計算するフォーム

フォームデザインを利用して、消費税計算結果を求めるフォームを作成します。

今日の日付を元に消費税を求めるなら「適用日」というテキストボックスは不要なのですが、今回は消費税8%の最終日と消費税10%の開始日の税率を確認をするために、あえてフォームに配置してあります。

消費税を取得して計算するVBAを記述

フォームに配置した「計算ボタン」を押した時のクリックイベントに、以下のVBAを記述します。

Private Sub btn計算_Click()

'=== 金額チェック ===
    Dim zei As Variant
    Dim zei_kiri As Variant
    
    If Nz(Me.txt金額, "") = "" Then
       MsgBox ("金額を入力して下さい"), vbExclamation, "金額チェック"
       Exit Sub
    End If
    
'=== 本日の日付を元に消費税率を求める(コメント化) ===
    'zei = DLookup("税率", "T_消費税", "適用from <= #" & Date & "#" & "AND 適用to >= #" & Date & "#")
    
'=== テキストボックスの日付を元に消費税率を求める ===
    zei = DLookup("税率", "T_消費税", "適用from <= #" & txt日付 & "#" & "AND 適用to >= #" & txt日付 & "#")
    
    '=== 消費税の端数は切り捨て ===
    zei_kiri = Int(Me("txt金額") * zei)
     
    '=== 計算結果をテキストボックスにセット ===
    Me("txt税率") = zei
    Me("txt消費税") = zei_kiri
    Me("txt税込金額") = Me("txt金額") + Me("txt消費税")

End Sub
[st-minihukidashi fontawesome=”” fontsize=”80″ fontweight=”” bgcolor=”#3F51B5″ color=”#fff” margin=”0 0 0 -6px”]ココがポイント[/st-minihukidashi]

[st-cmemo fontawesome=”fa-hand-o-right” iconcolor=”#3F51B5″ bgcolor=”#E8EAF6″ color=”#000000″ iconsize=”200″]DlookUp関数を用いて、テキストボックスの日付が「T_消費税」の適用fromと適用toの間にある税率を取得するしています。(16行目)[/st-cmemo]
取得した消費税は、変数「zei」に格納。

テキストボックスの金額に変数「zei」をかけて消費税を求めていますが、その際に「Int関数」を用いて発生した端数を切り捨てています。

消費税を切り捨てるのか、切り上げるのか、四捨五入するのかは、業務によって異なりますので、この部分は必要に応じて変更して下さい。

※本日の日付を基準にして消費税率を取得したい場合は、VBA13行目を有効にすればOKです。

消費税の取得結果を確認

「適用日」に消費税8%の最終日である「2019/9/30」、「金額」に10,000円を設定して計算ボタンを押すと、8%の消費税が取得できました。

消費税8%の計算結果

「適用日」に消費税10%の開始日である「2019/10/01」、「金額」に10,000円を設定して計算ボタンを押すと、10%の消費税が取得できました。

消費税10%の計算結果

まとめ:アクセスで消費税の自動計算

エクセルで行う消費税計算は

「ROUNDDOWN(A1*1.08,0)」

のように直接セルに「1.08」を記入していることが多いと思います。

この方法は手軽なのですが、消費税を計算している箇所をすべて、新しい消費税に置き換える必要があります。

アクセスなら消費税テーブルへ1行追加するだけで、消費税率に伴う修正は完了となるので非常に便利ですよ。