休假时间计算

时间:2013-05-23 14:52:00

标签: function vba date access-vba

在我的Access数据库表单中,我有一个字段,其中包含休假时间的计算。目前的公式如下:

Function calcVacEarned(asOfDate As Date, HireDate As Date)
  Dim yos As Single

  yos = (asOfDate - HireDate) / 365.25

  Select Case yos
    Case Is > 10
      calcVacEarned = 120
    Case Is > 3
      calcVacEarned = 80
    Case Is > 1
      calcVacEarned = 40
    Case Else
      calcVacEarned = 0
  End Select
End Function

然而,时间不正确。我们的休假时间从周年纪念日到第一年的周年纪念日和接下来几年的日历年。

例如,如果我于2010年2月11日被聘用,我的周年纪念日是11/02/2011,这将给我1年的服务和5天的假期。 (所以我从11/02/2011 - 2011年12月31日开始我的5天或者失去它们)

然后在2012年1月1日,我的休假时间将在第2年的第5天开始。(我已经从2012年1月1日 - 12月31日开始这5天。

2013年1月1日我将进入第3年并收到10天。

我需要上面的功能来代表这个...帮助!!谢谢

1 个答案:

答案 0 :(得分:0)

我认为如果我理解你的问题,这将会做你想要的。您只需要更改大于3年的雇用日期。

Function calcVacEarned(asOfDate As Date, HireDate As Date)
    calcVacEarned = 0

    Dim yos As Single

    yos = (asOfDate - HireDate) / 365.25

    If yos > 1 And yos < 2 Then
        calcVacEarned = 40
    ElseIf yos > 2 Then
        HireDate = "01/01/" & Year(HireDate)
    End If

    yos = (asOfDate - HireDate) / 365.25

    Select Case yos
        Case Is > 10
            calcVacEarned = 120
        Case Is > 3
            calcVacEarned = 80
    End Select
End Function