Option Explicit
Private Sub cmdCalDiffTime_Click()
Dim ResultTime As String
' àÃÕ¡ä»Âѧ¿Ñ§¤ìªÑè¹ CalTime à¾×èÍÊ觤èÒàÇÅÒàÃÔèÁµé¹ áÅÐ ÊÔé¹ÊØ´ä»
' áÅÐ Ê觤èÒ¡ÅѺ (Return) ÁÒà»ç¹áºº String ... ¤Ø³¨ÐàÍÒÁÒà»ç¹àÇÅÒ¡çä´é
ResultTime = CalTime(dtpStartTime, dtpEndTime)
' ¡ÒÃÊ觤èÒÇèÒ§à»ÅèÒ¡ÅѺÁÒ ... áÊ´§ÇèÒ¡ÒäӹdzÅéÁàËÅÇ äÁèµéͧ·Ó¡ÒÃáÊ´§¼Å
If ResultTime <> "" Then MsgBox "¨Ó¹Ç¹àÇÅÒ·ÕèµèÒ§¡Ñ¹ : " & _
ResultTime, vbOKOnly + vbInformation, "ÃÒ§ҹ¼Å"
End Sub
Private Sub Form_Load()
' µÑé§¿ÍÃìÁãËéÍÂÙè¡Öè§¡ÅÒ§¨ÍÀÒ¾ ... à¤Ã×èͧËÁÒ \ ¤×Í ¡ÒÃËÒõѴàÈÉ
' ¡ÒäӹdzẺ¹Õé¨ÐàÃçÇ¡ÇèÒ¡ÒÃËÒÃàÍÒàÈÉ / ... ¹èФÃѺ¾Õè¹éͧ (µÔêºàÅç¡æ)
Me.Move (Screen.Width - Width) \ 2, (Screen.Height - Height) \ 2
' ¡Ó˹´¤èÒàÇÅÒ㹡Ò÷´Êͺ´Ù
dtpStartTime.Value = "8:30:23"
dtpEndTime.Value = "12:46:53"
End Sub
Public Function CalTime(StartTime As Date, EndTime As Date) As String
On Error GoTo ErrHandler
Dim cHH As Long
Dim cMM As Long
Dim cSS As Long
' ·´Êͺ¤èÒ¡è͹ÇèÒàÇÅÒàÃÔèÁµé¹µéͧ¹éÍ¡ÇèÒàÇÅÒ·ÕèÊÔé¹ÊØ´
If StartTime = EndTime Then
' ¤èÒà·èҡѹ¡çäÁèµéͧ¤Ó¹Ç³ÍÐäÃÍÕ¡áÅéÇ ... àÊÕÂàÇÅÒà»ÅèÒ 55555+
CalTime = "0:00:00"
Exit Function
' àÇÅÒàÃÔèÁµé¹ÁÒ¡¡ÇèÒ ¡çá¨é§ Error ãËé·ÃÒº
ElseIf StartTime > EndTime Then
MsgBox "àÇÅÒàÃÔèÁµé¹¨ÐÁÒ¡¡ÇèÒä´éä§ÅèоÕè¹éͧ ... ÁÑèÇËÃ×Íà»ÅèÒ.", _
vbOKOnly + vbInformation, "ÃÒ§ҹ¤ÇÒÁ¼Ô´¾ÅÒ´"
' ¤×¹¤èÒÇèÒ§à»ÅèÒ¡ÅѺ ... ËÃ×ÍÍ×è¹æ¡çä´é ·ÕèàÃÒµéͧ¡ÒÃá¨é§¡ÅѺä»ÇèÒ·Ó§Ò¹ÅéÁàËÅÇ ...
' áÅШºâ»Ãá¡ÃÁÂèÍ (Function)
CalTime = ""
Exit Function
End If
' ===============================================================================
' ËÅÑ¡¡Òâͧ¡ÒÃËÒ¤èÒ¤ÇÒÁᵡµèÒ§¢Í§àÇÅÒ
' ãªé¡ÒÃËÒ¤èÒ¤ÇÒÁᵡµèÒ§ã¹ÃдѺ¨Ó¹Ç¹¢Í§ÇÔ¹Ò·Õ·Ñé§ËÁ´ÍÍ¡ÁÒ¡è͹
' áÅéǤèͤԴµÑ´ÍÍ¡¨Ò¡¨Ó¹Ç¹ªÑèÇâÁ§ ¹Ò·Õ áÅÐ ÇÔ¹Ò·Õ ·ÕèµèÒ§¡Ñ¹
' 1 ªÑèÇâÁ§ à·èҡѺ 3600 ÇÔ¹Ò·Õ
' 1 ¹Ò·Õ à·èҡѺ 60 ÇÔ¹Ò·Õ
Dim SecInMinute As Integer
Dim SecInHour As Integer
SecInMinute = 60 ' ¨Ó¹Ç¹ 1 ¹Ò·Õà·èҡѺ 60 ÇÔ¹Ò·Õ
SecInHour = 3600 ' ÁÒ¨Ò¡¨Ó¹Ç¹ 60 ¹Ò·Õã¹ 1 ªÑèÇâÁ§ ¤Ù³à¢éҡѺ 60 ÇÔ¹Ò·Õã¹áµèÅÐ¹Ò·Õ ´Ñ§¹Ñé¹ 1 ªÑèÇâÁ§ = 3600 ÇÔ¹Ò·Õ
' ===============================================================================
' ËҨӹǹªÑèÇâÁ§ (Hour) ... ËÒõѴàÈÉ ( \ ) ·Ôé§ä»àÅ ... ·Ó§Ò¹ä´éàÃçÇ¡ÇèÒ¡ÒÃËÒÃàÍÒàÈÉ ( / )
' ¡ÒáÓ˹´ª¹Ô´µÑÇá»ÃẺàÅ¢¨Ó¹Ç¹àµçÁ (Integer ËÃ×Í Long) ÁѹäÁèÁÕàÅ¢·È¹ÔÂÁÍÂÙèáÅéǤÃѺ
' ËÒ¤ÇÒÁᵡµèÒ§¢Í§¨Ó¹Ç¹ªÑèÇâÁ§ â´Â¹Ñºà»ç¹ÇÔ¹Ò·Õ ¨Ò¡¹Ñé¹ãËéËÒõѴàÈÉ´éÇ (¨Ó¹Ç¹¹Ò·Õ x ¨Ó¹Ç¹ÇÔ¹Ò·Õ)
' ¹Ñ蹤×Í ¤èÒ·Õèä´é \ (60 ¹Ò·Õ x 60 ÇÔ¹Ò·Õ) ... 1 ªÑèÇâÁ§¡ç¨Ðà·èҡѺ 3600 ÇÔ¹Ò·Õ
cHH = DateDiff("s", StartTime, EndTime) \ SecInHour
' ËҨӹǹ¹Ò·Õ (Minute) ... äÅèà¤Ã×èͧËÁÒÂǧàÅçºãËé¶Ù¡´éǹèФÃѺ
' ¡ÒÃãÊèǧàÅçº ¨ÐÁÕ¤ÇÒÁÊӤѷÕèÊÙ§¡ÇèÒà¤Ã×èͧËÁÒ + - * / ... ÍÂèÒÅ×Áà´ç´¢Ò´
' ¤ÇÒÁᵡµèÒ§¢Í§¨Ó¹Ç¹¹Ò·Õ ¤èÒ·Õèä´éãËéźÍÍ¡¨Ò¡¨Ó¹Ç¹ÇÔ¹Ò·Õ
' ¨Ó¹Ç¹ÇÔ¹Ò·Õ·Õèä´é ãËéźÍÍ¡¨Ò¡àÇÅҨӹǹªÑèÇâÁ§·ÕèµèÒ§¡Ñ¹¡è͹ (ªÑèÇâÁ§ x ÇÔ¹Ò·Õ)
' áÅéǤèÍÂËÒõѴàÈÉ´éÇ 60 ... à¾ÃÒÐ 1 ¹Ò·Õ = 60 ÇÔ¹Ò·Õ
cMM = (DateDiff("s", StartTime, EndTime) - (cHH * SecInHour)) \ SecInMinute
' ·ÕèàËÅ×Í¡çà»ç¹ÇÔ¹Ò·Õ (Second)
' ¨Ó¹Ç¹ÇÔ¹Ò·Õ·ÕèµèÒ§¡Ñ¹·Ñé§ËÁ´ - ¨Ó¹Ç¹ªÑèÇâÁ§·ÕèµèÒ§¡Ñ¹ - ¨Ó¹Ç¹¹Ò·Õ·ÕèµèÒ§¡Ñ¹
' ¨Ó¹Ç¹ªÑèÇâÁ§·ÕèµèÒ§¡Ñ¹ ¡Ñº ¨Ó¹Ç¹¹Ò·Õ·ÕèµèÒ§¡Ñ¹ àÃÒ¤Ô´ÃдѺà»ç¹ÇÔ¹Ò·Õ¹èФÃѺ ... ¾Õè¹éͧ
cSS = DateDiff("s", StartTime, EndTime) - (cHH * SecInHour) - (cMM * SecInMinute)
' ¤×¹¤èÒ¡ÅѺãËé¿Ñ§¤ìªÑè¹ (Return ¤èÒ¡ÅѺà»ç¹ String)
CalTime = cHH & ":" & cMM & ":" & cSS
ExitProc:
Exit Function
ErrHandler:
MsgBox Err.Number & vbCrLf & Err.Description, vbOKOnly + vbInformation, "ÃÒ§ҹ¤ÇÒÁ¼Ô´¾ÅÒ´"
Resume Next
End Function
|