静岡県三島市の税理士、松井元(@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)にカラオケサークルに参加させて頂きました!
楽しく歌うことができて良かったです。
上手くなりたい ^^

