0

私は以下を介して期間を計算しようとしていますSub。しかし、それは2回の反復しか必要としません。必要4な場合、結果としてすべての期間が合計されていません。私が紹介した2 msgbox-結果を示しています。完璧な長さを示す最も適切なものですが、2番目のものは望ましくないものを示しています。

コード

msgbox(ArrayListTaskDetails.Count) '~~ output is 16
For IndexSearch = 0 To ArrayListTaskDetails.Count - 1 Step 4

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

If Err Then

msgbox(IndexSearch) '~~ output as 8. here is the question why the error occurs?
Err.Clear
Exit for

End If

Next

Function TimeAdd(dt1,dt2)

If (IsDate(Cdate(dt1)) And IsDate(Cdate(dt2))) = False Then ' `Type mismatch: Cdate` error occurs in this line. Could you guide me here where the wrong is?
TimeAdd = "00:00:00"
Exit Function
End If

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

End Function

注:期間は00:05:2300:11:58、、、、195:33:12320:37:133、7、11、15番目の位置にあります。List

4

1 に答える 1

1

このIsDate関数は、評価された式を日付に変換できるかどうかを示すブール値を返します。式が日付であるか、日付に変換できる場合は True を返します。それ以外の場合は False を返します。Link here

コードは次のようにする必要があります:-

If Not (IsDate((dt1) And IsDate(dt2)) Then            '' If dt1 or dt2, any one from this id not date then it will set timeAdd = "00:00:00"
   TimeAdd = "00:00:00"
   Exit Function
End If
于 2013-01-02T07:34:56.677 に答える