| 
    
     |  | はるとさん、こんばんは 
 とりあえず作ってみました。
 日付をまたがる様な処理は考えていません。
 シート名【勤怠】の1行目にヘッダ、2行目以降データが記述され
 各時間は時刻型で入力されているものとして、多分こんな感じかと
 標準モジュールにどぞ
 
 Public Sub 勤怠チェック()
 '定数---シート名や列の場所が違うときはここを変更して!
 Const シート名 As String = "勤怠"
 Const 日付 As String = "A"
 Const 出社時間列 As String = "I"
 Const 始業時間列 As String = "C"
 Const 退社時間列 As String = "J"
 Const 終業時間列 As String = "D"
 Const 休憩開始列 As String = "E"
 Const 休憩終了列 As String = "F"
 Const 遅刻許容 As Date = #12:30:00 AM#
 Const 早退許容 As Date = #12:30:00 AM#
 Const 休憩チェック As Date = #6:00:00 PM#
 Const 休憩開始時間 As Date = #5:45:00 PM#
 Const 休憩終了時間 As Date = #6:00:00 PM#
 
 Dim SHT As Excel.Worksheet
 Dim StartRow As Long
 Dim EndRow As Long
 Dim iii As Long
 
 StartRow = 2  'データ開始行は2行目から
 Set SHT = ThisWorkbook.Sheets(シート名)
 EndRow = SHT.Range(日付 & "1").End(xlDown).Row
 
 For iii = StartRow To EndRow
 '出社時間チェック
 If (SHT.Range(始業時間列 & iii).Value + 遅刻許容 - SHT.Range(出社時間列 & iii).Value) <= 0 Then
 SHT.Range(出社時間列 & iii).Interior.Color = vbRed
 End If
 
 '退社時間チェック
 If (SHT.Range(終業時間列 & iii).Value - 早退許容 - SHT.Range(退社時間列 & iii).Value) >= 0 Then
 SHT.Range(退社時間列 & iii).Interior.Color = vbRed
 End If
 
 '休憩時間チェック
 If (休憩チェック <= SHT.Range(退社時間列 & iii).Value) Then
 If (SHT.Range(休憩開始列 & iii).Value <> 休憩開始時間) Then SHT.Range(休憩開始列 & iii).Interior.Color = vbRed
 If (SHT.Range(休憩終了列 & iii).Value <> 休憩終了時間) Then SHT.Range(休憩終了列 & iii).Interior.Color = vbRed
 End If
 Next
 End Sub
 
 |  |