ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Discussion (Misc queries) (https://www.excelbanter.com/excel-discussion-misc-queries/)
-   -   Time/date problem. (https://www.excelbanter.com/excel-discussion-misc-queries/116375-time-date-problem.html)

[email protected]

Time/date problem.
 
This macro works for the shifts that only include the hours. In the
sheet that the macro will run on the date is included as well (ex.
10/27/06 6:59 AM), when the macro encounters this it lists the shift
as an A shift regardless of the time. Is there anyway I could ignore
the date in the cell and just look at the numbers when assigning the
shifts?



Sub fillShifts()
Dim timeA1 As Date, timeA2 As Date, timeB1 As Date
Dim timeB2 As Date, timeC1 As Date, timeC2 As Date
timeB1 = TimeValue("7:00:00 AM")
timeB2 = TimeValue("14:59:59 PM")
timeA1 = TimeValue("23:00:00 PM")
timeA2 = TimeValue("6:59:59 AM")
timeC1 = TimeValue("15:00:00 PM")
timeC2 = TimeValue("22:59:59 PM")
Dim cell As Range
Range("a1:a1000").Select
For Each cell In Selection.Cells
If cell.Value = timeB1 And cell.Value <= timeB2 Then
cell.Offset(0, 1).Value = "B"
ElseIf cell.Value = timeC1 And cell.Value <= timeC2 Then
cell.Offset(0, 1).Value = "C"
ElseIf cell.Value = timeA1 Or cell.Value <= timeA2 Then
cell.Offset(0, 1).Value = "A"
End If
Next
Range("a1").Select
End Sub


Dave O

Time/date problem.
 
This should do it for you: I added some math that will trim out the
integer portion of the date, leaving just the time. I also added line
that will skip any blank cells that might occur.

Sub fillShifts()
Dim timeA1 As Date, timeA2 As Date, timeB1 As Date
Dim timeB2 As Date, timeC1 As Date, timeC2 As Date
timeB1 = TimeValue("7:00:00 AM")
timeB2 = TimeValue("14:59:59 PM")
timeA1 = TimeValue("23:00:00 PM")
timeA2 = TimeValue("6:59:59 AM")
timeC1 = TimeValue("15:00:00 PM")
timeC2 = TimeValue("22:59:59 PM")
Dim cell As Range
Range("a1:a1000").Select
For Each cell In Selection.Cells
If cell.Value = 0 Then GoTo Bailout: 'added this line to skip blank
cells
If cell.Value - Int(cell.Value) = timeB1 And cell.Value -
Int(cell.Value) <= timeB2 Then
cell.Offset(0, 1).Value = "B"
ElseIf cell.Value - Int(cell.Value) = timeC1 And cell.Value -
Int(cell.Value) <= timeC2 Then
cell.Offset(0, 1).Value = "C"
ElseIf cell.Value - Int(cell.Value) = timeA1 Or cell.Value -
Int(cell.Value) <= timeA2 Then
cell.Offset(0, 1).Value = "A"
End If
Bailout:
Next
Range("a1").Select
End Sub


[email protected]

Time/date problem.
 
Thank you very much.


Dave O

Time/date problem.
 
No worries... did it work?.



All times are GMT +1. The time now is 10:40 AM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
ExcelBanter.com