‘ 設定時刻を取得
Sub SetAlarmTime()
Dim inputHour As Variant, inputMinute As Variant, inputSecond As Variant
Dim sheet As Worksheet
Set sheet = ThisWorkbook.Sheets(1)

‘ セルの値を取得
inputHour = sheet.Cells(6, 3).Value
inputMinute = sheet.Cells(6, 4).Value
inputSecond = sheet.Cells(6, 5).Value

‘ 時・分・秒の入力がすべて揃っているか確認
If IsEmpty(inputHour) Or IsEmpty(inputMinute) Or IsEmpty(inputSecond) Then
If Not alarmSet Then ‘ メッセージボックスを一度だけ表示
MsgBox “時・分・秒をすべて入力してください。”, vbExclamation
End If
Exit Sub
End If

‘ 数値以外の場合のエラーチェック
If Not IsNumeric(inputHour) Or Not IsNumeric(inputMinute) Or Not IsNumeric(inputSecond) Then
MsgBox “時・分・秒には数値を入力してください。”, vbExclamation
Exit Sub
End If

‘ 入力を時刻に変換
On Error Resume Next
targetTime = TimeSerial(CInt(inputHour), CInt(inputMinute), CInt(inputSecond))
On Error GoTo 0

‘ 無効な場合のエラーハンドリング
If targetTime = 0 Then
MsgBox “無効な時刻形式です。時・分・秒を正しく入力してください。”, vbExclamation
Exit Sub
End If

‘ targetTime に日付を補完
If targetTime < Time Then targetTime = Date + 1 + TimeValue(Format(targetTime, "hh:mm:ss")) ' 翌日に設定 Else targetTime = Date + TimeValue(Format(targetTime, "hh:mm:ss")) ' 当日に設定 End If alarmSet = True MsgBox "アラームを " & Format(targetTime, "yyyy/mm/dd hh:mm:ss") & " にセットしました。", vbInformation End Sub Sub LogoutPC() On Error Resume Next ' 現在のタイマーを解除 Dim prevTime As Date prevTime = Now + TimeValue("00:00:01") Application.OnTime prevTime, "UpdateClock", , False ' タイマーを解除 ' 自動保存とエクセル終了 ThisWorkbook.Save ThisWorkbook.Saved = True Application.Quit ' エクセル終了 ' Windows ログアウト実行 ExitWindowsEx EWX_LOGOFF, SHTDN_REASON_MAJOR_OTHER End Sub