'健康保険加入、雇用保険料率設定フォーム '「0」A欄 '「1」B欄 Option Explicit Private mobjWS As Worksheet 'ワークシート '雇用保険加入チェック Private Sub chkKoyou_Click() If Me.chkKoyou.Value = -1 Then If Me.fraKubun.Visible = False Then Me.fraKubun.Visible = True ElseIf Me.chkKoyou.Value = 0 Then If Me.fraKubun.Visible = True Then Me.fraKubun.Visible = False End If End Sub '政府管掌保険加入チェック Private Sub chkSyakai_Click() If Me.chkSyakai.Value = -1 Then If Me.Frame1.Visible = False Then Me.Frame1.Visible = True Me.TextBox1.SetFocus End If ElseIf Me.chkSyakai.Value = 0 Then If Me.Frame1.Visible = True Then Me.Frame1.Visible = False End If End Sub '閉じるボタン Private Sub cmdEND_Click() If Me.cmdEnd.Caption = "閉じる" Then gFlg = True Unload Me End Sub '登録ボタン Private Sub cmdOK_Click() Dim intMsg As Integer 'メッセージの戻り値 intMsg = MsgBox("登録しますか。", 32 + 4, "給与計算システム") 'データの登録 If intMsg = 6 Then Call SetData MsgBox "正常に設定しました。", 64 + 0, "給与計算システム" End If If Me.cmdEnd.Enabled = False Then Me.cmdEnd.Enabled = True End Sub Private Sub optKubun2_Click() End Sub 'フォームロード時 Private Sub UserForm_Initialize() '起動時の設定 Call NewData End Sub 'フォームクローズ Private Sub UserForm_Terminate() Set mobjWS = Nothing End Sub 'フォーカスがあたったとき Private Sub TextBox1_Enter() With Me.TextBox1 .BackColor = RGB(255, 255, 0) If .Text = "" Then .Text = Format$(0, "0.000") .SelStart = 0 .SelLength = Len(.Text) .IMEMode = 3 End With End Sub 'フォーカスが外れたとき Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) With Me.TextBox1 .BackColor = RGB(255, 255, 255) .Text = Format$(.Text, "0.000") .IMEMode = 0 End With End Sub '値が変更されたあと Private Sub TextBox1_AfterUpdate() 'NULL値の検査 If Me.TextBox1.Text = "" Then Me.TextBox1.Text = 0 End Sub 'フォーカスがあたったとき Private Sub TextBox2_Enter() With Me.TextBox2 .BackColor = RGB(255, 255, 0) If .Text = "" Then .Text = Format$(0, "0.000") .SelStart = 0 .SelLength = Len(.Text) .IMEMode = 3 End With End Sub 'フォーカスが外れたとき Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean) With Me.TextBox2 .BackColor = RGB(255, 255, 255) .Text = Format$(.Text, "0.000") .IMEMode = 0 End With End Sub '値が変更されたあと Private Sub TextBox2_AfterUpdate() 'NULL値の検査 If Me.TextBox2.Text = "" Then Me.TextBox2.Text = 0 End Sub '区分の設定 Private Sub SetData() Dim clsKoyou() As clsNumber '雇用保険区分クラス Dim intKubun As Integer '雇用保険区分 Dim intKoyou As Integer '雇用保険加入の有無 Dim intKenkou As Integer '社会保険加入の有無 Dim dblHokenritu As Double '健康保険料率 Dim dblNenkinritu As Double '厚生年金料率 Dim i As Integer '整数型カウンタ Const lngRow As Long = 2 'レコード Const bytCol As Byte = 1 'フィールド ReDim clsKoyou(4) As clsNumber '配列再定義 'フォームの値 If Me.chkSyakai.Value = -1 Then intKenkou = CInt(1) If Me.chkSyakai.Value = 0 Then intKenkou = CInt(0) If Me.chkKoyou.Value = -1 Then intKoyou = CInt(1) If Me.chkKoyou.Value = 0 Then intKoyou = CInt(0) If Me.optKubun1.Value = True Then intKubun = CInt(0) If Me.optKubun2.Value = True Then intKubun = CInt(1) If Me.TextBox1.Value <> "" Then dblHokenritu = CDbl(Me.TextBox1.Value) If Me.TextBox2.Value <> "" Then dblNenkinritu = CDbl(Me.TextBox2.Value) '雇用区分クラスのインスタンス For i = 0 To 4 Set clsKoyou(i) = New clsNumber Next '各情報の取得 clsKoyou(0).Number = CDbl(intKenkou) clsKoyou(1).Number = CDbl(intKoyou) clsKoyou(2).Number = CDbl(intKubun) clsKoyou(3).Number = dblHokenritu clsKoyou(4).Number = dblNenkinritu 'ワークシートに登録 For i = 0 To 4 clsKoyou(i).SetData mobjWS, lngRow, bytCol + i Next 'クラスの開放 For i = 0 To 2 Set clsKoyou(i) = Nothing Next End Sub '起動時の設定 Private Sub NewData() 'ワークシート Set mobjWS = Workbooks(gstrName).Worksheets("Sheet1") If mobjWS.Cells(2, 1).Value = 0 Then 'フレームを非表示 Me.chkSyakai.Value = 0 Me.Frame1.Visible = False Else '加入状況を表示 Me.chkSyakai.Value = -1 Me.Frame1.Visible = True If mobjWS.Cells(2, 4).Value = 0 Then Me.TextBox1.Value = Format$(0, "0.000") Else Me.TextBox1.Value = CDbl(mobjWS.Cells(2, 4).Value) End If If mobjWS.Cells(2, 5).Value = 0 Then Me.TextBox2.Value = Format$(0, "0.000") Else Me.TextBox2.Value = CDbl(mobjWS.Cells(2, 5).Value) End If End If If mobjWS.Cells(2, 2).Value = 0 Then Me.chkKoyou.Value = 0 Me.fraKubun.Visible = False Else Me.chkKoyou.Value = -1 Me.fraKubun.Visible = True If mobjWS.Cells(2, 3).Value = 0 Then Me.optKubun1.Value = -1 If mobjWS.Cells(2, 3).Value = 1 Then Me.optKubun2.Value = -1 End If '区分選択の初期値 If gFlg = False Then Me.cmdEnd.Caption = "次へ >>" Me.cmdEnd.Enabled = False ElseIf gFlg = True Then Me.cmdEnd.Caption = "閉じる" Me.cmdEnd.Enabled = True End If End Sub