0

I just wrote a code to see the addition of two time durations which are in hh:mm:ss format;but not getting the one I am looking for.

CODE

Option Explicit

Dim v1 : v1 = #20:20:10#
Dim v2 : v2 = #20:20:10#

MsgBox (v1 + v2)

OUTPUT Coming as 12/31/1899 4:40:20 PM

Could you guide me here?

Update

Code

Option Explicit

Dim V1 : v1 = #20:20:10#
Dim V2 : v2 = #20:42:10#

MsgBox (Hour(V1) + Hour(V2)) & ":" & Minute(V1) + Minute(V2) & ":" & Second(V1) + Second(V2)

Output Coming as 40:62:20

Undesired

UPDATED CODE

SumDate = "00:00:00" 

For IndexSearch = 0 To ArrayListTaskDetails.Count - 1 Step 4

dt1 = ArrayListTaskDetails(IndexSearch + 3)         
SumDate = TimeAdd(dt1,SumDate)

Loop

Function TimeAdd(dt1,dt2)

If (IsDate(dt1) And IsDate(dt2)) = False Then
TimeAdd = "00:00:00"
Exit Function
End If

TimeAdd = Hour(dt1)+Hour(dt2) & ":" & Minute(dt1)+Minute(dt2) & ":" & Second(dt1)+Second(dt2)
End Function
4

3 に答える 3

2

これで、分と秒が正規化されます。

Sub SummingTimes()


  Dim v1: v1 = #8:32:33 PM#
  Dim v2: v2 = #8:32:33 PM#
  Dim hours As Variant
  Dim minutes As Variant
  Dim seconds As Variant
  Dim timetext As String


     seconds = Second(v1) + Second(v2)
      minutes = Int(seconds / 60)
       seconds = seconds - minutes * 60
        minutes = minutes + Minute(v1) + Minute(v2)
       hours = Int(minutes / 60)
      minutes = minutes - hours * 60
     hours = hours + Hour(v1) + Hour(v2)
   timetext = hours & ":" & minutes & ":" & seconds
  MsgBox timetext

End Sub

メッセージボックスにが表示されます41:5:6。を取得したい場合は41:05:06、いくつかの文字列操作が必要です。Excelスプレッドシート:http ://www.bumpclub.ee/~jyri_r/Excel/Summing_hh-mm-ss.xls

于 2012-12-27T19:17:40.467 に答える
2

TimeValue時刻を含むサブタイプ Date の Variant を返す関数を使用できます。

 Option Explicit

Dim v1 : v1 = #20:20:10#
Dim v2 : v2 = #20:20:10#

MsgBox (TimeValue(v1 + v2))

編集:-

FormatDateTime(date,format)私の知る限り、フォーマットで使用しても、そのような追加を行う直接的な方法はありません。vbLongTime以下のコードのように、追加と印刷時間、分と秒の通常のロジックを使用する必要があります

  Option Explicit 
  Dim v1 : v1 = #20:20:10#
  Dim v2 : v2 = #20:20:10#
  Msgbox Hour(v1)+Hour(v1)&":"&Minute(v1)+Minute(v2)&":"&Second(v1)+Second(v2)
于 2012-12-27T07:26:26.663 に答える
1

Excel の日付は、1900 年 1 月 1 日からの日数として内部的に保存されます。
したがって、1 日 = 1 です。
したがって、1 時間 = 1/24 です。
このロジックでは、20 時間 + 20 時間は日付を返します。これは、1900 年 1 月 2 日の午後 4 時 (40-24) であると予想されます。
私は VbScript の専門家ではありませんが、VBA ではカスタム形式を使用して問題を解決できます。hh の
MsgBox Format(v1 + v2, "[hh]:mm")
周りの [] は、時間表示が小数部だけでなく値全体に適用されるように強制しています。

もう 1 つの解決策は、timevalues に 24 を掛けることです。これは、「10 進数の時間」を返します。
MsgBox (#20:00# + #20:30#)*24ご想像のとおり、40.5 が返されます。

于 2012-12-27T08:17:45.707 に答える