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

もう1つの可能性は、開始時刻と終了時刻を入力することです。

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 に答える
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 に答える