日計入力の画面とプログラム紹介
Option Explicit
Dim Yobi(7) As String
Dim Column As String
Dim ColW As String
Private Sub UserForm_Initialize()
'初期画面の設定
Yobi(1) = "月曜日"
Yobi(2) = "火曜日"
Yobi(3) = "水曜日"
Yobi(4) = "木曜日"
Yobi(5) = "金曜日"
Yobi(6) = "土曜日"
Yobi(7) = "日曜日"
Call ClearGamen
End Sub
Private Sub ClearGamen()
'画面のクリア
Dim i As Integer
tbTuki = ""
tbHi = ""
lblKinGokei = ""
lblKinGokei.Visible = False
lblGokei.Visible = False
cmdOK.Visible = False
For i = 1 To 50
Me("tbKin" & i) = ""
Me("tbKin" & i).Visible = False
Next i
End Sub
Private Sub DispGamen()
'金額画面の表示
Dim i As Integer
tbTuki.Enabled = False
tbHi.Enabled = False
lblKinGokei.Visible = True
lblGokei.Visible = True
cmdOK.Visible = True
For i = 1 To 50
Me("tbKin" & i).Visible = True
Next i
End Sub
Private Sub cmdCancel_Click()
'キャンセルボタンがクリックされた時
Unload Me
End Sub
Private Sub cmdOK_Click()
'OKボタンがクリックされた時
Call 合計計算
Range(Column & tbHi.Text) = lblKinGokei.Caption
Unload Me
End Sub
Private Sub tbTuki_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'カーソルが月のコントロールを出た時
If tbTuki = "" Then Exit Sub
If tbTuki < 1 Or 12 < tbTuki Then
MsgBox "月が間違っています"
Cancel = True
End If
End Sub
Private Sub tbHi_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'カーソルが日のコントロールを出た時
Dim chkDate As String
Dim chkYYYY As Integer
If tbHi = "" Then Exit Sub
If tbHi < 1 Or 31 < tbHi Then
MsgBox "日が間違っています"
Cancel = True
Exit Sub
Else
chkYYYY = Year(Date)
If Month(Date) < tbTuki Then
chkYYYY = chkYYYY - 1
End If
chkDate = chkYYYY & "/" & tbTuki & "/" & tbHi
If Not IsDate(chkDate) Then
MsgBox "日付が間違っています"
Cancel = True
Exit Sub
End If
End If
lblYobi.Caption = Yobi(Weekday(chkDate))
Call DispGamen
Select Case tbTuki.Text
Case 1: Sheets("1〜4月").Select: Column = "B"
Case 2: Sheets("1〜4月").Select: Column = "D"
Case 3: Sheets("1〜4月").Select: Column = "F"
Case 4: Sheets("1〜4月").Select: Column = "H"
Case 5: Sheets("5〜8月").Select: Column = "B"
Case 6: Sheets("5〜8月").Select: Column = "D"
Case 7: Sheets("5〜8月").Select: Column = "F"
Case 8: Sheets("5〜8月").Select: Column = "H"
Case 9: Sheets("9〜12月").Select: Column = "B"
Case 10: Sheets("9〜12月").Select: Column = "D"
Case 11: Sheets("9〜12月").Select: Column = "F"
Case 12: Sheets("9〜12月").Select: Column = "H"
End Select
If Val(Range(Column & tbHi.Text)) <> 0 Then
tbKin1 = Range(Column & tbHi.Text)
lblKinGokei = Range(Column & tbHi.Text)
tbKin2.SetFocus
Else
tbKin1 = ""
tbKin1.SetFocus
End If
End Sub
Private Sub tbKin1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'カーソルが金額1のコントロールを出た時
Call 合計計算
End Sub
Private Sub tbKin2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'カーソルが金額2のコントロールを出た時
Call 合計計算
End Sub
Private Sub tbKin3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'カーソルが金額3のコントロールを出た時
Call 合計計算
End Sub
Private Sub tbKin4_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'カーソルが金額4のコントロールを出た時
Call 合計計算
End Sub
Private Sub tbKin5_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'カーソルが金額5のコントロールを出た時(以下、略)
Call 合計計算
End Sub
以下、金額のコントロールを出た時の同じ処理が、金額50まで続く。
Private Sub 合計計算()
'入力された金額の合計を計算する
Dim i As Integer
Dim Gokei As Long
Gokei = 0
For i = 1 To 50
Gokei = Gokei + Val(Me("tbKin" & i).Text)
Next i
lblKinGokei.Caption = Format(Gokei, "##,###,###")
End Sub
戻る