'変数宣言強制 Option Explicit Private lData() As Long 'テキストボックスデータ '計算ボタン Private Sub CommandButton1_Click() Dim chk As Integer If Me.CheckBox2.Value = True Then chk = 0 If Me.CheckBox2.Value = False Then chk = 1 '給与 Call GetTxtData If chk = 0 Then Call KoyouA Call CalcA Call SikyuA '賞与 If chk = 0 Then Call KoyouB Call SyahoCalc Call CalcB Call SikyuB Call SetTxtData End Sub '閉じるボタン Private Sub CommandButton2_Click() Unload Me End Sub 'フォーカスが外れたとき Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) Dim tmp As Long tmp = CLng(Me.TextBox1.Value) + CLng(Me.TextBox2.Value) Me.TextBox3.Text = Format$(tmp, "#,##0") tmp = CLng(Me.TextBox3.Value) - CLng(Me.TextBox9.Value) Me.TextBox10.Text = Format$(tmp, "#,##0") Me.TextBox1.Text = Format$(Me.TextBox1.Text, "#,##0") End Sub 'フォーカスが外れたとき Private Sub TextBox11_Exit(ByVal Cancel As MSForms.ReturnBoolean) Dim tmp As Long tmp = CLng(Me.TextBox12.Value) tmp = tmp + CLng(Me.TextBox13.Value) tmp = tmp + CLng(Me.TextBox14.Value) tmp = tmp + CLng(Me.TextBox15.Value) tmp = tmp + CLng(Me.TextBox16.Value) Me.TextBox17.Text = Format$(tmp, "#,##0") tmp = CLng(Me.TextBox11.Value) - CLng(Me.TextBox17.Value) Me.TextBox18.Text = Format$(tmp, "#,##0") Me.TextBox11.Text = Format$(Me.TextBox11.Text, "#,##0") End Sub 'フォーカスが外れたとき Private Sub TextBox12_Exit(ByVal Cancel As MSForms.ReturnBoolean) Dim tmp As Long tmp = CLng(Me.TextBox12.Value) tmp = tmp + CLng(Me.TextBox13.Value) tmp = tmp + CLng(Me.TextBox14.Value) tmp = tmp + CLng(Me.TextBox15.Value) tmp = tmp + CLng(Me.TextBox16.Value) Me.TextBox17.Text = Format$(tmp, "#,##0") tmp = CLng(Me.TextBox11.Value) - CLng(Me.TextBox17.Value) Me.TextBox18.Text = Format$(tmp, "#,##0") Me.TextBox12.Text = Format$(Me.TextBox12.Text, "#,##0") End Sub 'フォーマットが外れたとき Private Sub TextBox13_Exit(ByVal Cancel As MSForms.ReturnBoolean) Dim tmp As Long tmp = CLng(Me.TextBox12.Value) tmp = tmp + CLng(Me.TextBox13.Value) tmp = tmp + CLng(Me.TextBox14.Value) tmp = tmp + CLng(Me.TextBox15.Value) tmp = tmp + CLng(Me.TextBox16.Value) Me.TextBox17.Text = Format$(tmp, "#,##0") tmp = CLng(Me.TextBox11.Value) - CLng(Me.TextBox17.Value) Me.TextBox18.Text = Format$(tmp, "#,##0") Me.TextBox13.Text = Format$(Me.TextBox13.Text, "#,##0") End Sub 'フォーカスが外れたとき Private Sub TextBox14_Exit(ByVal Cancel As MSForms.ReturnBoolean) Dim tmp As Long tmp = CLng(Me.TextBox12.Value) tmp = tmp + CLng(Me.TextBox13.Value) tmp = tmp + CLng(Me.TextBox14.Value) tmp = tmp + CLng(Me.TextBox15.Value) tmp = tmp + CLng(Me.TextBox16.Value) Me.TextBox17.Text = Format$(tmp, "#,##0") tmp = CLng(Me.TextBox11.Value) - CLng(Me.TextBox17.Value) Me.TextBox18.Text = Format$(tmp, "#,##0") Me.TextBox14.Text = Format$(Me.TextBox14.Text, "#,##0") End Sub 'フォーカスが外れたとき Private Sub TextBox15_Exit(ByVal Cancel As MSForms.ReturnBoolean) Dim tmp As Long tmp = CLng(Me.TextBox12.Value) tmp = tmp + CLng(Me.TextBox13.Value) tmp = tmp + CLng(Me.TextBox14.Value) tmp = tmp + CLng(Me.TextBox15.Value) tmp = tmp + CLng(Me.TextBox16.Value) Me.TextBox17.Text = Format$(tmp, "#,##0") tmp = CLng(Me.TextBox11.Value) - CLng(Me.TextBox17.Value) Me.TextBox18.Text = Format$(tmp, "#,##0") Me.TextBox15.Text = Format$(Me.TextBox15.Text, "#,##0") End Sub 'フォーカスが外れたとき Private Sub TextBox16_Exit(ByVal Cancel As MSForms.ReturnBoolean) Dim tmp As Long tmp = CLng(Me.TextBox12.Value) tmp = tmp + CLng(Me.TextBox13.Value) tmp = tmp + CLng(Me.TextBox14.Value) tmp = tmp + CLng(Me.TextBox15.Value) tmp = tmp + CLng(Me.TextBox16.Value) Me.TextBox17.Text = Format$(tmp, "#,##0") tmp = CLng(Me.TextBox11.Value) - CLng(Me.TextBox17.Value) Me.TextBox18.Text = Format$(tmp, "#,##0") Me.TextBox16.Text = Format$(Me.TextBox16.Text, "#,##0") End Sub 'フォーカスが外れたとき Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean) Dim tmp As Long tmp = CLng(Me.TextBox1.Value) + CLng(Me.TextBox2.Value) Me.TextBox3.Text = Format$(tmp, "#,##0") tmp = CLng(Me.TextBox3.Value) - CLng(Me.TextBox9.Value) Me.TextBox10.Text = Format$(tmp, "#,##0") Me.TextBox2.Text = Format$(Me.TextBox2.Text, "#,##0") End Sub 'フォーカスが外れたとき Private Sub TextBox4_Exit(ByVal Cancel As MSForms.ReturnBoolean) Dim tmp As Long tmp = CLng(Me.TextBox4.Value) tmp = tmp + CLng(Me.TextBox5.Value) tmp = tmp + CLng(Me.TextBox6.Value) tmp = tmp + CLng(Me.TextBox7.Value) tmp = tmp + CLng(Me.TextBox8.Value) Me.TextBox9.Text = Format$(tmp, "#,##0") tmp = CLng(Me.TextBox3.Value) - CLng(Me.TextBox9.Value) Me.TextBox10.Text = Format$(tmp, "#,##0") Me.TextBox4.Text = Format$(Me.TextBox4.Text, "#,##0") End Sub 'フォーカスが外れたとき Private Sub TextBox5_Exit(ByVal Cancel As MSForms.ReturnBoolean) Dim tmp As Long tmp = CLng(Me.TextBox4.Value) tmp = tmp + CLng(Me.TextBox5.Value) tmp = tmp + CLng(Me.TextBox6.Value) tmp = tmp + CLng(Me.TextBox7.Value) tmp = tmp + CLng(Me.TextBox8.Value) Me.TextBox9.Text = Format$(tmp, "#,##0") tmp = CLng(Me.TextBox3.Value) - CLng(Me.TextBox9.Value) Me.TextBox10.Text = Format$(tmp, "#,##0") Me.TextBox5.Text = Format$(Me.TextBox5.Text, "#,##0") End Sub 'フォーカスが外れたとき Private Sub TextBox6_Exit(ByVal Cancel As MSForms.ReturnBoolean) Dim tmp As Long tmp = CLng(Me.TextBox4.Value) tmp = tmp + CLng(Me.TextBox5.Value) tmp = tmp + CLng(Me.TextBox6.Value) tmp = tmp + CLng(Me.TextBox7.Value) tmp = tmp + CLng(Me.TextBox8.Value) Me.TextBox9.Text = Format$(tmp, "#,##0") tmp = CLng(Me.TextBox3.Value) - CLng(Me.TextBox9.Value) Me.TextBox10.Text = Format$(tmp, "#,##0") Me.TextBox6.Text = Format$(Me.TextBox6.Text, "#,##0") End Sub 'フォーカスが外れたとき Private Sub TextBox7_Exit(ByVal Cancel As MSForms.ReturnBoolean) Dim tmp As Long tmp = CLng(Me.TextBox4.Value) tmp = tmp + CLng(Me.TextBox5.Value) tmp = tmp + CLng(Me.TextBox6.Value) tmp = tmp + CLng(Me.TextBox7.Value) tmp = tmp + CLng(Me.TextBox8.Value) Me.TextBox9.Text = Format$(tmp, "#,##0") tmp = CLng(Me.TextBox3.Value) - CLng(Me.TextBox9.Value) Me.TextBox10.Text = Format$(tmp, "#,##0") Me.TextBox7.Text = Format$(Me.TextBox7.Text, "#,##0") End Sub 'フォーカスが外れたとき Private Sub TextBox8_Exit(ByVal Cancel As MSForms.ReturnBoolean) Dim tmp As Long tmp = CLng(Me.TextBox4.Value) tmp = tmp + CLng(Me.TextBox5.Value) tmp = tmp + CLng(Me.TextBox6.Value) tmp = tmp + CLng(Me.TextBox7.Value) tmp = tmp + CLng(Me.TextBox8.Value) Me.TextBox9.Text = Format$(tmp, "#,##0") tmp = CLng(Me.TextBox3.Value) - CLng(Me.TextBox9.Value) Me.TextBox10.Text = Format$(tmp, "#,##0") Me.TextBox8.Text = Format$(Me.TextBox8.Text, "#,##0") End Sub 'ユーザーフォーム作成時 Private Sub UserForm_Initialize() '配列再定義 ReDim lData(18) As Long 'テキストボックス初期化 Dim txt As MSForms.TextBox Dim i As Integer For i = 1 To 19 Set txt = Me.Controls("TextBox" & CStr(i)) txt.Text = Format$(0, "#,##0") txt.TextAlign = fmTextAlignRight Next 'オプションボタン初期値 Me.OptionButton1.TripleState = False Me.OptionButton2.TripleState = False Me.OptionButton3.TripleState = False Me.OptionButton4.TripleState = False Me.OptionButton1.Value = True Me.OptionButton3.Value = True 'チェックボックス初期値 Me.CheckBox1.TripleState = False Me.CheckBox2.TripleState = False Me.CheckBox2.Value = True 'フォーカス Me.TextBox19.SelStart = 0 Me.TextBox19.SelLength = Len(Me.TextBox19.Text) Me.TextBox19.SetFocus End Sub 'ユーザーフォーム閉じる Private Sub UserForm_Terminate() '配列開放 If IsEmpty(lData) = True Then Erase lData End Sub 'テキストボックスの値取得 Private Sub GetTxtData() Dim txt As MSForms.TextBox Dim i As Integer For i = 1 To 19 Set txt = Me.Controls("TextBox" & CStr(i)) lData(i - 1) = CLng(txt.Value) Next End Sub 'テキストボックスへ値格納 Private Sub SetTxtData() Dim txt As MSForms.TextBox Dim i As Integer For i = 1 To 19 Set txt = Me.Controls("TextBox" & CStr(i)) txt.Text = Format$(lData(i - 1), "#,##0") Next End Sub '雇用保険計算(給与) Private Sub KoyouA() Dim cls As Class4 '雇用保険クラス Set cls = New Class4 Dim kubun As Integer '雇用保険区分 If Me.OptionButton3.Value = True Then kubun = 0 If Me.OptionButton4.Value = True Then kubun = 1 Dim sikyu As Integer '給与賞与別 sikyu = 0 Call cls.CalculateHoken(lData(2), kubun, sikyu) lData(6) = CInt(cls.KoyouHoken) 'クラス開放 Set cls = Nothing End Sub '源泉徴収税計算(給与) Private Sub CalcA() Dim i As Integer Dim hoken As Long '保険料控除 hoken = 0 For i = 3 To 6 hoken = hoken + lData(i) Next Dim opt As Integer '甲乙欄区分 If Me.OptionButton1.Value = True Then opt = 0 If Me.OptionButton2.Value = True Then opt = 1 If opt = 0 Then Dim cls1 As Class1 '甲欄給与クラス Set cls1 = New Class1 ElseIf opt = 1 Then Dim cls2 As Class2 '乙欄給与クラス Set cls2 = New Class2 End If Dim tmp As Long tmp = lData(0) - hoken If opt = 0 Then Call cls1.CalculateZei(tmp, CInt(lData(18))) lData(7) = CLng(cls1.Zei) 'クラス解放 Set cls1 = Nothing ElseIf opt = 1 Then Call cls2.CalculateZei(tmp) lData(7) = CLng(cls2.Zei) 'クラス解放 Set cls2 = Nothing End If End Sub '差引支給額(給与) Private Sub SikyuA() '控除額合計 Dim i As Integer lData(8) = 0 For i = 3 To 7 lData(8) = lData(8) + lData(i) Next lData(9) = lData(2) - lData(8) End Sub '雇用保険計算(賞与) Private Sub KoyouB() Dim cls As Class4 '雇用保険クラス Set cls = New Class4 Dim kubun As Integer '雇用保険区分 If Me.OptionButton3.Value = True Then kubun = 0 If Me.OptionButton4.Value = True Then kubun = 1 Dim sikyu As Integer '給与賞与別 sikyu = 1 Call cls.CalculateHoken(lData(10), kubun, sikyu) lData(14) = CInt(cls.KoyouHoken) 'クラス解放 Set cls = Nothing End Sub '源泉徴収税計算(賞与) Private Sub CalcB() Dim hoken1 As Long '社会保険料(月額) hoken1 = lData(3) + lData(4) + lData(5) Dim hoken2 As Long '社会保険(賞与) hoken2 = lData(11) + lData(12) + lData(13) + lData(14) Dim opt As Integer '甲乙欄区分 If Me.OptionButton1.Value = True Then opt = 0 If Me.OptionButton2.Value = True Then opt = 1 Dim cls As Class3 '賞与クラス Set cls = New Class3 If opt = 0 Then Call cls.CalculateZei(lData(10), hoken1, hoken2, CInt(lData(18))) If opt = 1 Then Call cls.CalculateZei2(lData(10), hoken1, hoken2) lData(15) = CLng(cls.Zei) 'クラス解放 Set cls = Nothing End Sub '差引支給額(賞与) Private Sub SikyuB() '控除額合計 Dim i As Integer lData(16) = 0 For i = 11 To 15 lData(16) = lData(16) + lData(i) Next lData(17) = lData(10) - lData(16) End Sub '賞与の社会保険料計算 Private Sub SyahoCalc() '賞与の標準報酬額は、千円未満切り捨て '円未満の端数処理は、51銭が切り上げ、50銭が切り捨て '満40歳以上は介護費用保険が必要 Const dblKenkou As Double = 0.041 '健康保険料率 Const dblNenkin As Double = 0.0679 '厚生年金率 Const dblKaigo As Double = 0.00555 '介護費用率 Dim dblHyojun As Double '標準賞与額 Dim dblKenkougaku As Double '健康保険料 Dim dblNenkingaku As Double '厚生年金額 Dim dblKaigogaku As Double '介護保険料額 Const dblTeisu As Double = 0.9 '切り上げ定数 Const dblRokunyu As Double = 0.4 '五捨六入定数 Const dblHyojungaku As Double = 1000 '標準報酬額のまるめ桁 Const dblHantei As Double = 10 '切り上げ判定桁 dblHyojun = Int(CDbl(lData(10) / dblHyojungaku) * dblHyojungaku) dblKenkougaku = Int(((dblHyojun * dblKenkou * dblHantei) + dblTeisu) / dblHantei + dblRokunyu) dblNenkingaku = Int(((dblHyojun * dblNenkin * dblHantei) + dblTeisu) / dblHantei + dblRokunyu) '介護費用保険の判定 Dim chk As Integer If Me.CheckBox1.Value = True Then chk = 0 If Me.CheckBox1.Value = False Then chk = 1 If chk = 0 Then dblKaigogaku = Int(((dblHyojun * dblKaigo * dblHantei) + dblTeisu) / dblHantei + dblRokunyu) Else dblKaigogaku = 0 End If lData(11) = CLng(dblKenkougaku) lData(12) = CLng(dblKaigogaku) lData(13) = CLng(dblNenkingaku) End Sub