0

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

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,工作起来并不容易(任何代码改进也值得赞赏:))。

4

2 回答 2

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

它使用浮点值来表示小时,并以小时而不是分钟返回一个值。

于 2012-10-02T20:20:24.720 回答
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#

于 2012-10-02T22:44:43.067 回答