VBA创建If语句来检查小时数

时间:2012-10-02 20:10:54

标签: vba if-statement

如何创建一个需要花费数小时作为参数的函数。像这样的东西,

Function BREAK_TIME(work_time)
    If 4 <= work_time < 9.5 Then
        BREAK_TIME = 30
    End If
    If work_time >= 9.5 Then
        BREAK_TIME = 60
    End If
End Function

但我怎么能说这是时间?我希望它能做的是:花费数小时,例如07:40:00,并告诉我员工有多少分钟的休息时间,这里是30分钟。

我为令人难以置信的丑陋代码道歉。第一次使用VBA并不容易工作(任何代码改进也很受欢迎:))。

2 个答案:

答案 0 :(得分:0)

您可以使用Date对象,该对象具有存储各种时间单位的功能,或者您可以将小时数作为浮点数(在您的示例中为7.666666)或作为一组小时数传递,分钟和秒。

我修改了你的功能:

Function BREAK_TIME(work_time as Single) as Single
    If work_time < 4 Then
        BREAK_TIME = 0
    ElseIf work_time >= 4 And work_time < 9.5 Then
        BREAK_TIME = .5
    ElseIf work_time >= 9.5 Then
        BREAK_TIME = 1
    End If
End Function

它使用浮点值表示小时数,并以小时而不是分钟为单位返回值。

答案 1 :(得分:0)

另一种可能性就是只开始和结束时间。

Function BREAK_TIME(time_to_meet, time_you_are_off)
    'Difference in minutes
    worked = DateDiff("n", time_to_meet, time_you_are_off)

    Select Case worked
    Case Is <= 240
        BREAK_TIME = 0
    Case Is < 570
        BREAK_TIME = 30
    Case Is >= 570
        BREAK_TIME = 60
    End Select
End Function

输入可以是:BREAK_TIME #7:40:00 AM#, #2:30:00 PM#