静岡県三島市の税理士、松井元(@hajime_matsui)です。
こんにちは!
従業員に支給する給料から天引きする源泉所得税は、源泉徴収税額表から読み取ります。
税務署から送られてくる紙の源泉徴収税額表がありますが、それを目で追うのは正直疲れるし、面倒臭いです。
Excel シートでマクロ(Excel VBA)を使って、読み取らせることもできます。
今日は、源泉徴収税額を計算するマクロ(VBA)入り Excel シートを紹介します。
こちらからダウンロードできるようにしましたので、使っていただければ!
(2019年分のものです)
※以下に使い方・使用条件など書いてありますのでご確認下さい。
また、同内容のツールの使い方をYoutubeでもアップしておりますので参考にして下さい▼
チャンネル登録は、こちらからお願い致します。
1、源泉徴収税額を計算するマクロ(Excel VBA)入り Excel シート
マクロ(VBA)入り Excel シートの使い方
このようなシート↓ で、源泉徴収税額(月額)を計算します。
従業員の
・給料額(月額)
・社会保険料
・扶養人数
を入力して、「計算実行」ボタンを押せば毎源泉徴収税額(月額)が表示されます。
使用条件ですが
●扶養人数は 7人以下
●給料額 − 社会保険料は 860,000万円未満
となります。
ほとんどのケースは上記の使用条件の範囲内だと思います。
*例外的に扶養人数が多い場合、給料額がかなり大きい場合はこのシートでは計算できません。
マクロ(VBA)入り Excel シートのの仕組み
仕組みをざっと説明しておきます。
「開発」タブの「ActiveXコントロール」で、入力用のボックスや計算用のボタンを挿入します。
入力用のボックスや計算用のボタンには、マクロを組み込むことができます。
それぞれ以下のようなオブジェクト名にしてあります。
「開発」タブの「デザインモード」にすると、挿入したこれらのオブジェクト↑ の位置やサイズを変更できます。
図形を操作するのと同じようにできます。
今回はマクロ(Excel VBA)で「源泉徴収_月額表」シートから、税額を読み取っています。
こちら↓ が「源泉徴収_月額表」シートにいれてあるデータです。
国税庁のHP からダウンロードできます。
2、源泉徴収税額を計算する Excel VBA コード
今回の Excel VBA コードを示しておきますね。
以下のオブジェクト全てに Excel VBA コードが入れ込んであります。
TextBox1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Private Sub TextBox1_Change() TextBox1 = Format(TextBox1, "#,###0") '3桁毎にカンマ打つ' If Len(TextBox1.Text) = 0 Then Exit Sub End If If IsNumeric(Right(TextBox1.Text, 1)) = True Then Exit Sub End If TextBox1.Text = Left(TextBox1.Text, Len(TextBox1.Text) - 1) End Sub |
TextBox2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Private Sub TextBox2_Change() TextBox2 = Format(TextBox2, "#,###0") '3桁毎にカンマ打つ' If Len(TextBox2.Text) = 0 Then Exit Sub End If If IsNumeric(Right(TextBox2.Text, 1)) = True Then Exit Sub End If TextBox2.Text = Left(TextBox2.Text, Len(TextBox2.Text) - 1) End Sub |
TextBox3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Private Sub TextBox3_Change() TextBox3 = Format(TextBox3, "#,###0") '3桁毎にカンマ打つ' If Len(TextBox3.Text) = 0 Then Exit Sub End If If IsNumeric(Right(TextBox3.Text, 1)) = True Then Exit Sub End If TextBox3.Text = Left(TextBox3.Text, Len(TextBox3.Text) - 1) End Sub |
TextBox4
1 2 3 4 5 |
Private Sub TextBox4_Change() TextBox4.Enabled = True End Sub |
入力クリア
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
Private Sub 入力クリア_Click() Dim myObj As OLEObject 'Worksheet上のオブジェクトとして定義' For Each myObj In OLEObjects If TypeName(myObj.Object) = "TextBox" Then If myObj.Name = "TextBox1" Or myObj.Name = "TextBox2" Or myObj.Name = "TextBox3" Or myObj.Name = "TextBox4" Then myObj.Object.Value = "" Else End If Else End If Next End Sub |
計算実行
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 |
Private Sub 計算実行_Click() Dim kyuyo Dim shaho Dim fuyou Dim fuyou4 Dim Min_kyuyo_minus_shaho Dim Max_kyuyo_minus_shaho Dim Max_fuyou Dim Start_gyou Dim Last_gyou 'データの並びが変わった場合に変更が必要な変数↓' Start_gyou = 10 '税額表データ検索の際の最初の行番号' Last_gyou = 350 '税額表データ検索の際の最後の行番号' plus = 4 '税額表データ検索の際の扶養人数の列番号に加算する値' Min_kyuyo_minus_shaho = 88000 '給料-社会保険料の最小値' Max_kyuyo_minus_shaho = 860000 '給料-社会保険料の最大値' kyuyo = TextBox1.Text 'TextBox1 に入力する給料額(月額)' shaho = TextBox2.Text 'TextBox2 に入力する社会保険料' fuyou = TextBox3.Text 'TextBox3 に入力する扶養人数' 'TextBox1 に入力した給料額(月額)が空白の場合' If kyuyo = "" Then MsgBox "給料額(月額)には0より大きい金額を入力して下さい。" Exit Sub Else End If 'TextBox2 に入力した社会保険料が空白の場合' If shaho = "" Then MsgBox "社会保険料には0以上の金額を入力して下さい。" Exit Sub Else End If 'TextBox3 に入力した扶養人数が空白の場合' If fuyou = "" Then MsgBox "扶養人数には0以上の金額を入力して下さい。" Exit Sub Else End If '税額表での扶養人数の列番号' fuyou4 = fuyou + plus '給料額から社会保険料を控除した金額' kyuyo_minus_shaho = kyuyo - shaho '社会保険料控除後の給与額が0未満の場合の処理↓' If kyuyo_minus_shaho < 0 Then MsgBox "社会保険料は給与額よりも低い額を入力下さい", vbOKOnly, "確認" TextBox2.Text = "" Exit Sub Else End If '社会保険料控除後の給与額が Min_kyuyo_minus_shaho 未満の場合の処理↓' If kyuyo_minus_shaho < Min_kyuyo_minus_shaho And kyuyo_minus_shaho >= 0 Then TextBox4 = 0 TextBox4 = Format(TextBox4, "#,###0") TextBox4.ForeColor = RGB(255, 0, 0) Exit Sub End If '社会保険料控除後の給与額が Max_kyuyo_minus_shaho 以上の場合の処理↓' If kyuyo_minus_shaho >= Max_kyuyo_minus_shaho Then MsgBox "「給料額ー社会保険料」が" & Format(Max_kyuyo_minus_shaho, "#,###0") & "円以下になる範囲内で入力下さい。" TextBox1.Text = "" TextBox2.Text = "" TextBox4.Text = "" Exit Sub Else End If '源泉徴収税額抽出↓' Select Case fuyou Case Is <= 7 For j = Start_gyou To Last_gyou If kyuyo_minus_shaho >= Worksheets("源泉徴収_月額表").Cells(j, 2).Value And kyuyo_minus_shaho < Worksheets("源泉徴収_月額表").Cells(j, 3).Value Then zeigaku1 = Worksheets("源泉徴収_月額表").Cells(j, fuyou4).Value TextBox4 = Application.WorksheetFunction.RoundDown(zeigaku1, 0) TextBox4 = Format(TextBox4, "#,###0") TextBox4.ForeColor = RGB(255, 0, 0) Exit Sub End If Next j Case Is > 7 MsgBox "扶養人数は7人以下にして下さい。" TextBox3.Text = "" Case Else End Select TextBox1.BackColor = RGB(255, 255, 255) TextBox2.BackColor = RGB(255, 255, 255) TextBox3.BackColor = RGB(255, 255, 255) End Sub |
3、まとめ
源泉徴収税額を計算するマクロ(VBA)入り Excel シートを紹介します。
こちらからダウントードできますので、是非どうぞ!
同内容のツールの使い方をYoutubeでもアップしておりますので参考にして下さい▼
チャンネル登録は、こちらからお願い致します。
編集後記
この週末は日曜日(9/29)にカラオケサークルに参加させて頂きました!
楽しく歌うことができて良かったです。
上手くなりたい ^^