Option Explicit '処理年度設定フォーム Private mobjWS As Worksheet 'ワークシート 'クリアボタン Private Sub cmdClear_Click() '初期値に戻す Call NewData Call GetData(mobjWS) End Sub '消去ボタン Private Sub cmdDelete_Click() Call SubDataClear MsgBox "前年度年末調整飼料を消去しました。", 64 + 0, "給与計算システム" End Sub '終了ボタン Private Sub cmdEND_Click() If Me.cmdEND.Caption = "閉じる" Then gFlg = True Unload Me End Sub '更新ボタン Private Sub cmdKousin_Click() Dim intZenki As Integer '前期期首年月日 Dim intKisyu As Integer '翌期期首年月日 intZenki = Year(CDate(Me.lblDate1.Caption)) intKisyu = intZenki + 1 Me.txtDate1.Text = Format$(intKisyu & "/1/1", "yyyy/mm/dd") Me.txtDate2.Text = Format$(intKisyu & "/12/31", "yyyy/mm/dd") If Me.cmdOK.Enabled = False Then Me.cmdOK.Enabled = True If Me.cmdEND.Enabled = False Then Me.cmdEND.Enabled = True End Sub '登録ボタン Private Sub cmdOK_Click() Dim intMsg As Integer 'メッセージの戻り値 Dim i As Integer 'カウンター intMsg = MsgBox("登録しますか。", 32 + 4, "給与計算システム") If intMsg = 6 Then '入力値の検査 If IsDate(Me.txtDate1.Text) = False Then GoTo DateErrorProc 'ワークシートに書き出し mobjWS.Cells(3, 1).Value = Format$(Me.txtDate1.Text, "yyyy/mm/dd") '不要なデータを消去 Call SubDataClear MsgBox "正常に更新しました。", 64 + 0, "給与計算システム" If Me.cmdKousin.Enabled = False Then Me.cmdKousin.Enabled = True End If '初期値再設定 Call NewData Call GetData(mobjWS) If Me.cmdEND.Caption = "完了" Then Me.cmdEND.Enabled = True Exit Sub DateErrorProc: MsgBox "日付の入力値が不正です。", 16 + 0, "給与計算システム" End Sub '更新後(期首) Private Sub txtDate1_AfterUpdate() If Me.txtDate1.Text <> "" And Me.cmdOK.Enabled = False Then Me.cmdOK.Enabled = True End Sub 'フォーカスがあたったとき(期首) Private Sub txtDate1_Enter() With Me.txtDate1 .BackColor = RGB(255, 255, 0) .SelStart = 0 .SelLength = Len(.Text) .TextAlign = 1 End With If Me.lblDate1.Caption = "" Then Me.txtDate1.Text = Format$(Year(Now), "yyyy/mm/dd") End Sub 'フォーカスが外れたとき(期首) Private Sub txtDate1_Exit(ByVal Cancel As MSForms.ReturnBoolean) With Me.txtDate1 .BackColor = RGB(255, 255, 255) .TextAlign = 3 End With End Sub 'フォームロード時 Private Sub UserForm_Initialize() Call NewData Call GetData(mobjWS) End Sub 'フォームクローズ Private Sub UserForm_Terminate() Set mobjWS = Nothing End Sub '初期値の取得 Private Sub GetData(ByVal objws As Worksheet) '引数[objWS]:ワークシート '初期値の取得 With Me.lblDate1 .SpecialEffect = 2 .Caption = Format$(mobjWS.Cells(3, 1).Value, "yyyy/mm/dd") End With With Me.lblDate2 .SpecialEffect = 2 .Caption = Format$(Year(mobjWS.Cells(3, 1).Value) & "/12/31", "yyyy/mm/dd") End With If Me.lblDate1.Caption = "" Then Me.txtDate1.Text = Format$(Year(Now) & "/1/1", "yyyy/mm/dd") Me.txtDate2.Text = Format$(Year(Now) & "/12/31", "yyyy/mm/dd") End If If Me.lblDate1.Caption <> "" Then Me.txtDate1.Text = "" Me.txtDate2.Text = "" End If If Me.lblDate1.Caption = "" Then Me.cmdKousin.Enabled = False If gFlg = False Then Me.cmdOK.Enabled = True Me.cmdEND.Caption = "完了" ElseIf gFlg = True Then Me.cmdOK.Enabled = False Me.cmdEND.Enabled = True End If End Sub '初期設定 Private Sub NewData() Dim objLB As MSForms.Label 'ラベルコントロール Dim i As Integer '整数型カウンタ 'ワークシート Set mobjWS = Workbooks(gstrName).Worksheets("Sheet1") 'ラベルコントロール For i = 1 To 2 Set objLB = Controls("lblDate" & CStr(i)) objLB.TextAlign = 3 Next Me.txtDate2.TextAlign = 3 With Me.txtDate1 .Text = "" .SetFocus End With If gFlg = False Then Me.cmdEND.Enabled = False If gFlg = True Then Me.cmdEND.Caption = "閉じる" Set objLB = Nothing End Sub '不要なデータの消去 Private Sub SubDataClear() Dim objws() As Worksheet 'ワークシート Dim i As Integer 'カウンター ReDim objws(3) As Worksheet Set objws(0) = Workbooks(gstrName).Worksheets("sheet7") Set objws(1) = Workbooks(gstrName).Worksheets("sheet8") Set objws(2) = Workbooks(gstrName).Worksheets("sheet9") Set objws(3) = Workbooks(gstrName).Worksheets("sheet10") '不要なデータの消去 For i = 0 To 3 objws(i).Cells(1, 1).CurrentRegion.Clear Next End Sub