EXCELVBAに関する質問です。A列の5行目から作業開始時間を(表示形式:yyyy/mm/dd)B列の5行目から作業終了時間(表示形式:yyyy/mm/dd)があります。この作業時間内に含まれた休憩時間を編集したいのですがうまくできません。やりたい内容は作業開始時間に休憩時間が含まれている場合は、休憩終了時間、作業終了時間に休憩時間が含まれている場合は休憩終了時間に修正するVBAコードを教えていただきたいです。休憩時間は開始12:00〜終了12:45, 開始16:30〜終了16:45です。ちなみにテストで休憩時間12:00〜12:45の作業開始時間のみのVBAコードを作りましたが、集計できませんでした。そのコードは以下のようになりますSub test() Dim ws As Worksheet Dim Lastrow As Long Dim i As Long Dim 作業開始時間 As Date Dim 休憩開始 As Date Dim 休憩終了 As Date Set ws = ThisWorkbook.Sheets(\u0026quot;Sheet1\u0026quot;)LastRow = ws.Cells(ws.Rows.Count,\u0026quot;A\u0026quot;).End(xlUp).Row休憩開始 = TimeSerial(12, 0, 0) ' 休憩開始時間 12:00:00 休憩終了 = TimeSerial(12, 45, 0) ' 休憩終了時間 12:45:00 For i = 5 To Lastrow If IsDate(ws.Cells(i, 1).Value) Then 作業開始時間 = ws.Cells(i, 1).Value If 作業開始時間 \u0026gt;= 休憩開始 And 作業開始時間 \u0026lt; 休憩終了 Then ws.Cells(i, \u0026quot;A\u0026quot;).Value = 休憩終了 End IfEnd IfNext iEnd Subわかる方宜しくお願いします

Excel

1件の回答

回答を書く

1048916

2026-01-14 23:10

+ フォロー

If IsDate(ws.Cells(i, 1).Value) Then

で全部処理対象外になってしまいます。

時間だけの場合は IsDate がFalseになるので。

あと私見ですが項目名は全角にしない方がいいと思います。



Sub test()

Dim Lastrow As Long

Dim i As Long

Dim 休憩開始 As Date

Dim 休憩終了 As Date

休憩開始 = TimeSerial(12, 0, 0)

休憩終了 = TimeSerial(12, 45, 0)

With Worksheets(\u0026quot;Sheet1\u0026quot;)

Lastrow = .Cells(Rows.Count, 1).End(xlUp).Row

For i = 5 To Lastrow

If .Cells(i, 1).Value \u0026gt; 休憩開始 And .Cells(i, 1).Value \u0026lt; 休憩終了 Then

.Cells(i, 1).Value = 休憩終了

End If

Next i

End With

End Sub

うったえる有益だ(0シェアするブックマークする

関連質問

Copyright © 2026 AQ188.com All Rights Reserved.

博識 著作権所有