Home |
Search |
Today's Posts |
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
I posted this in July under "Calculating Vacation" without a resonse. I
thought I had it working, but was tripped up when we went live. Any assistance would be greatly appreciated. I'm trying to calculate vacation accrual with the following specs: - No vacation accrued for first 180 days - After 180 days, 1.54 hours per week until calendar year break - From first calendar year break it's incremental. I've got the incremental down and my system works great if the employee was hired before January 1, 2006. Here is the code I'm using: Select Case anniv Case Is < 2 LAccrualRate = 1.54 ' Calculate day of last day of hire year DtEndOfYear = CDate("12/31/" & CStr(Year(hiredate))) LCountDays = Day(DtEndOfYear) - Day(hiredate) ' Check to see if 180 days elapsed between hiredate and end of hire year If LCountDays 180 Then ' if so, was employee hired last year? If Year(hiredate) < Year(Now) Then ' if so, hours accrued = 80 LHoursRemain = 80 Else ' if not, hours accrued = weeks * 1.54 LWeeksWorked = LCountDays / 7 LHoursRemain = LWeeksWorked * 1.54 End If Else ' if 180 days not elapsed, hours accrued=0 LHoursRemain = 0 End If Case 2 To 4 LHoursRemain = 80 LAccrualRate = 1.54 Case 5 To 14 LHoursRemain = 120 LAccrualRate = 2.31 Case Is 14 LHoursRemain = 160 LAccrualRate = 3.08 End Select -- Adios, Clay Harryman |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
You have an error in this line
from: LCountDays = day(DtEndOfYea)r - day(hiredate) to: LCountDays = DtEndOfYear - hiredate If you wqant an integer then LCountDays = int(DtEndOfYear - hiredate) "Clayman" wrote: I posted this in July under "Calculating Vacation" without a resonse. I thought I had it working, but was tripped up when we went live. Any assistance would be greatly appreciated. I'm trying to calculate vacation accrual with the following specs: - No vacation accrued for first 180 days - After 180 days, 1.54 hours per week until calendar year break - From first calendar year break it's incremental. I've got the incremental down and my system works great if the employee was hired before January 1, 2006. Here is the code I'm using: Select Case anniv Case Is < 2 LAccrualRate = 1.54 ' Calculate day of last day of hire year DtEndOfYear = CDate("12/31/" & CStr(Year(hiredate))) LCountDays = Day(DtEndOfYear) - Day(hiredate) ' Check to see if 180 days elapsed between hiredate and end of hire year If LCountDays 180 Then ' if so, was employee hired last year? If Year(hiredate) < Year(Now) Then ' if so, hours accrued = 80 LHoursRemain = 80 Else ' if not, hours accrued = weeks * 1.54 LWeeksWorked = LCountDays / 7 LHoursRemain = LWeeksWorked * 1.54 End If Else ' if 180 days not elapsed, hours accrued=0 LHoursRemain = 0 End If Case 2 To 4 LHoursRemain = 80 LAccrualRate = 1.54 Case 5 To 14 LHoursRemain = 120 LAccrualRate = 2.31 Case Is 14 LHoursRemain = 160 LAccrualRate = 3.08 End Select -- Adios, Clay Harryman |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Will the int(LCountDays) return a number of days that I can compare with 180?
I was thinking that day(x) would return the day of the year. After reading your reply, I looked it up. It returns the day of the month. -- Adios, Clay Harryman "Joel" wrote: You have an error in this line from: LCountDays = day(DtEndOfYea)r - day(hiredate) to: LCountDays = DtEndOfYear - hiredate If you wqant an integer then LCountDays = int(DtEndOfYear - hiredate) "Clayman" wrote: I posted this in July under "Calculating Vacation" without a resonse. I thought I had it working, but was tripped up when we went live. Any assistance would be greatly appreciated. I'm trying to calculate vacation accrual with the following specs: - No vacation accrued for first 180 days - After 180 days, 1.54 hours per week until calendar year break - From first calendar year break it's incremental. I've got the incremental down and my system works great if the employee was hired before January 1, 2006. Here is the code I'm using: Select Case anniv Case Is < 2 LAccrualRate = 1.54 ' Calculate day of last day of hire year DtEndOfYear = CDate("12/31/" & CStr(Year(hiredate))) LCountDays = Day(DtEndOfYear) - Day(hiredate) ' Check to see if 180 days elapsed between hiredate and end of hire year If LCountDays 180 Then ' if so, was employee hired last year? If Year(hiredate) < Year(Now) Then ' if so, hours accrued = 80 LHoursRemain = 80 Else ' if not, hours accrued = weeks * 1.54 LWeeksWorked = LCountDays / 7 LHoursRemain = LWeeksWorked * 1.54 End If Else ' if 180 days not elapsed, hours accrued=0 LHoursRemain = 0 End If Case 2 To 4 LHoursRemain = 80 LAccrualRate = 1.54 Case 5 To 14 LHoursRemain = 120 LAccrualRate = 2.31 Case Is 14 LHoursRemain = 160 LAccrualRate = 3.08 End Select -- Adios, Clay Harryman |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Yes, int can be compared to 180 but it rounds the number down. Not sure if
you want to go up or down one day. "Clayman" wrote: Will the int(LCountDays) return a number of days that I can compare with 180? I was thinking that day(x) would return the day of the year. After reading your reply, I looked it up. It returns the day of the month. -- Adios, Clay Harryman "Joel" wrote: You have an error in this line from: LCountDays = day(DtEndOfYea)r - day(hiredate) to: LCountDays = DtEndOfYear - hiredate If you wqant an integer then LCountDays = int(DtEndOfYear - hiredate) "Clayman" wrote: I posted this in July under "Calculating Vacation" without a resonse. I thought I had it working, but was tripped up when we went live. Any assistance would be greatly appreciated. I'm trying to calculate vacation accrual with the following specs: - No vacation accrued for first 180 days - After 180 days, 1.54 hours per week until calendar year break - From first calendar year break it's incremental. I've got the incremental down and my system works great if the employee was hired before January 1, 2006. Here is the code I'm using: Select Case anniv Case Is < 2 LAccrualRate = 1.54 ' Calculate day of last day of hire year DtEndOfYear = CDate("12/31/" & CStr(Year(hiredate))) LCountDays = Day(DtEndOfYear) - Day(hiredate) ' Check to see if 180 days elapsed between hiredate and end of hire year If LCountDays 180 Then ' if so, was employee hired last year? If Year(hiredate) < Year(Now) Then ' if so, hours accrued = 80 LHoursRemain = 80 Else ' if not, hours accrued = weeks * 1.54 LWeeksWorked = LCountDays / 7 LHoursRemain = LWeeksWorked * 1.54 End If Else ' if 180 days not elapsed, hours accrued=0 LHoursRemain = 0 End If Case 2 To 4 LHoursRemain = 80 LAccrualRate = 1.54 Case 5 To 14 LHoursRemain = 120 LAccrualRate = 2.31 Case Is 14 LHoursRemain = 160 LAccrualRate = 3.08 End Select -- Adios, Clay Harryman |
#5
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Thank you, Joel.
Since I'll be dividing the number by 7 (the accrual rate is by week rather than day), one day either way won't impact the end result too severely. I've marked this as the answer. -- Adios, Clay Harryman "Joel" wrote: Yes, int can be compared to 180 but it rounds the number down. Not sure if you want to go up or down one day. "Clayman" wrote: Will the int(LCountDays) return a number of days that I can compare with 180? I was thinking that day(x) would return the day of the year. After reading your reply, I looked it up. It returns the day of the month. -- Adios, Clay Harryman "Joel" wrote: You have an error in this line from: LCountDays = day(DtEndOfYea)r - day(hiredate) to: LCountDays = DtEndOfYear - hiredate If you wqant an integer then LCountDays = int(DtEndOfYear - hiredate) "Clayman" wrote: I posted this in July under "Calculating Vacation" without a resonse. I thought I had it working, but was tripped up when we went live. Any assistance would be greatly appreciated. I'm trying to calculate vacation accrual with the following specs: - No vacation accrued for first 180 days - After 180 days, 1.54 hours per week until calendar year break - From first calendar year break it's incremental. I've got the incremental down and my system works great if the employee was hired before January 1, 2006. Here is the code I'm using: Select Case anniv Case Is < 2 LAccrualRate = 1.54 ' Calculate day of last day of hire year DtEndOfYear = CDate("12/31/" & CStr(Year(hiredate))) LCountDays = Day(DtEndOfYear) - Day(hiredate) ' Check to see if 180 days elapsed between hiredate and end of hire year If LCountDays 180 Then ' if so, was employee hired last year? If Year(hiredate) < Year(Now) Then ' if so, hours accrued = 80 LHoursRemain = 80 Else ' if not, hours accrued = weeks * 1.54 LWeeksWorked = LCountDays / 7 LHoursRemain = LWeeksWorked * 1.54 End If Else ' if 180 days not elapsed, hours accrued=0 LHoursRemain = 0 End If Case 2 To 4 LHoursRemain = 80 LAccrualRate = 1.54 Case 5 To 14 LHoursRemain = 120 LAccrualRate = 2.31 Case Is 14 LHoursRemain = 160 LAccrualRate = 3.08 End Select -- Adios, Clay Harryman |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
calendar year versus fiscal year | Excel Discussion (Misc queries) | |||
Help dealing with a fiscal year rather than a calendar year | Excel Worksheet Functions | |||
Calendar year change. | Excel Programming | |||
Sum for last calendar month & year | Excel Programming | |||
change the year in a calendar template to different year | Excel Discussion (Misc queries) |