Sub CreateAttendanceTemplate() 10 On Error GoTo ERR_HANDLER 20 Dim ws As Worksheet 30 Set ws = ActiveSheet '--- 見出し設定 --- 40 ws.Range("A1").Value = "日付" 41 ws.Range("B1").Value = "開始時刻" 42 ws.Range("C1").Value = "終了時刻" 43 ws.Range("D1").Value = "休憩時間 (時間:分)" 44 ws.Range("E1").Value = "実働時間 (hh:mm形式)" 45 ws.Range("F1").Value = "実働時間 (小数形式)" 46 ws.Range("G1").Value = "備考" '--- サンプルデータ --- 50 ws.Range("A2").Value = "2023/12/01" 51 ws.Range("B2").Value = "9:00" 52 ws.Range("C2").Value = "18:00" 53 ws.Range("D2").Value = "1:00" 54 ws.Range("G2").Value = "通常勤務" 60 ws.Range("A3").Value = "2023/12/02" 61 ws.Range("B3").Value = "22:00" 62 ws.Range("C3").Value = "7:00" 63 ws.Range("D3").Value = "1:00" 64 ws.Range("G3").Value = "夜勤(日付またぎ)" 70 ws.Range("A4").Value = "2023/12/03" 71 ws.Range("B4").Value = "8:00" 72 ws.Range("C4").Value = "8:00" 73 ws.Range("D4").Value = "2:00" 74 ws.Range("G4").Value = "24時間勤務" '--- 計算式設定(「同時刻=24h勤務」対応) --- 80 ws.Range("E2").Formula = _ "=IF(AND(HOUR($C2)=HOUR($B2),MINUTE($C2)=MINUTE($B2)),1-$D2," & _ "IF($C2<$B2,(HOUR($C2)+24)/24+MINUTE($C2)/1440-(HOUR($B2)/24+MINUTE($B2)/1440)-$D2," & _ "(HOUR($C2)/24+MINUTE($C2)/1440)-(HOUR($B2)/24+MINUTE($B2)/1440)-$D2))" 81 ws.Range("F2").Formula = "=HOUR(E2)+MINUTE(E2)/60" 82 ws.Range("E2:F2").AutoFill Destination:=ws.Range("E2:F4") '--- 書式設定 --- 90 ws.Range("A1:G1").Font.Bold = True 91 ws.Range("A1:G1").Interior.Color = RGB(240, 240, 240) ' 見出し行を薄いグレー 92 ws.Range("E2:E4").NumberFormatLocal = "[h]:mm" ' 24時間超表示 93 ws.Range("F2:F4").NumberFormat = "0.0" ' 小数(1桁表示) 94 ws.Range("E2:F4").Interior.Color = RGB(255, 242, 204) ' 計算結果セル 95 ws.Range("A2:D4,G2:G4").Interior.Color = RGB(255, 255, 255) ' 入力セル(白) 96 ws.UsedRange.Borders.LineStyle = xlContinuous ' 罫線(外枠・内枠) '--- 全体を中央寄せ --- 100 ws.UsedRange.HorizontalAlignment = xlCenter '--- 調整 --- 110 ws.Columns.AutoFit '--- 完了メッセージ --- 120 MsgBox "テンプレート作成完了!", vbInformation 130 Exit Sub ERR_HANDLER: 140 MsgBox "エラーが発生しました。行番号:" & Erl & vbCrLf & Err.Description, vbCritical End Sub