SUBTRACAO DE HORAS

DEYVERSON 16/04/2013 15:12:51
#422034
Pessoal

tenho uma macro onde são informada a hora inicial e hora final, tenho tembem um terceiro campo que é o total de horas trabalhadas, que deve ser a hora final - a hora inicial. O problema é quanto o turno passa da meia noite. Não consigo ajustar isso. Alguem pode me ajudar???

Abaio o codigo que estou usando:


Private Sub txthf_AfterUpdate()

[ô] formato hh:mm
hora = Left(txthf.Value, 2)
If hora > 30 Then
MsgBox [Ô]Hora Invalida[Ô], vbCritical, [Ô]ATENÇÃO[Ô]
txthf.SetFocus
txthf.Value = [Ô][Ô]
Exit Sub
End If

minuto = Right(txthf.Value, 2)
If minuto > 59 Then
MsgBox [Ô]Minuto Invalido[Ô], vbCritical, [Ô]ATENÇÃO[Ô]
txthf.SetFocus
txthf.Value = [Ô][Ô]
Exit Sub
End If

Minhahora = Format(hora & [Ô]:[Ô] & minuto, [Ô]HH:MM[Ô])

horafinal = CDate(Minhahora)
txthf.Value = Format(horafinal, [Ô]HH:MM[Ô])

horadisponivel = horafinal - CDate(txthi.Value)



txthdt.Value = Format(horadisponivel, [Ô]HH:MM[Ô])

Exit Sub

End Sub
OMAR2011 16/04/2013 17:31:55
#422040
Isso tem aqui e vários.

tempo = Text1.Text
Tempos = Text2.Text

Interval = #12:00:00 AM#

[ô]Interval = Interval + Tempo
Interval = CDate(tempo) - CDate(Tempos)

totalhours = Int(CSng(Interval * 24))
totalminutes = Int(CSng(Interval * 1440))
minutes = totalminutes Mod 60
hours = totalhours Mod 24

Text3.Text = Format(totalhours & [Ô]:[Ô] & minutes, [Ô]hh:mm[Ô])

Acho que da certo.
DEYVERSON 17/04/2013 11:28:31
#422065
não deu certo!!!!
DEYVERSON 17/04/2013 11:32:12
#422066
tenho essas duas macros

Private Sub txthi_AfterUpdate()

[ô] formato hh:mm

hora = Left(txthi.Value, 2)
If hora > 23 Then
MsgBox [Ô]Hora Invalida[Ô], vbCritical, [Ô]ATENÇÃO[Ô]
txthi.SetFocus
txthi.Value = [Ô][Ô]
Exit Sub
End If

minuto = Right(txthi.Value, 2)
If minuto > 59 Then
MsgBox [Ô]Minuto Invalido[Ô], vbCritical, [Ô]ATENÇÃO[Ô]
txthi.SetFocus
txthi.Value = [Ô][Ô]
Exit Sub
End If

Minhahora = Format(hora & [Ô]:[Ô] & minuto, [Ô]HH:MM[Ô])

horafinal = CDate(Minhahora)
txthi.Value = Format(horafinal, [Ô]HH:MM[Ô])

End Sub
Private Sub txthf_AfterUpdate()

[ô] formato hh:mm
hora = Left(txthf.Value, 2)
If hora > 30 Then
MsgBox [Ô]Hora Invalida[Ô], vbCritical, [Ô]ATENÇÃO[Ô]
txthf.SetFocus
txthf.Value = [Ô][Ô]
Exit Sub
End If

minuto = Right(txthf.Value, 2)
If minuto > 59 Then
MsgBox [Ô]Minuto Invalido[Ô], vbCritical, [Ô]ATENÇÃO[Ô]
txthf.SetFocus
txthf.Value = [Ô][Ô]
Exit Sub
End If

Minhahora = Format(hora & [Ô]:[Ô] & minuto, [Ô]HH:MM[Ô])

horafinal = CDate(Minhahora)
txthf.Value = Format(horafinal, [Ô]HH:MM[Ô])

horadisponivel = horafinal - CDate(txthi.Value)



txthdt.Value = Format(horadisponivel, [Ô]HH:MM[Ô])


Exit Sub

End Sub




No txthdt deve ter a subtração do txthf - txthi, porem dá erro quando tenho um turno que começa as 15:30hs e terminas as 01:30hs da madrugada.

Alguem pode me ajudar ???
OMAR2011 17/04/2013 14:16:42
#422070
Isto é feito e vb6.

Private Sub Command1_Click()
Text1.Text = [Ô]17/04/2013 01:35:00[Ô]
Text2.Text = [Ô]16/04/2013 07:00:00[Ô]

Tempo = Text2.Text
tempos =Text1.Text

[ô]Tempo = #3/2/2012 7:34:00 PM#
[ô]tempos = #3/2/2012 8:14:00 PM#

Interval = #12:00:00 AM#

[ô]Interval = Interval + Tempo
Interval = CDate(tempos) - CDate(Tempo)

totalhours = Int(CSng(Interval * 24))
totalminutes = Int(CSng(Interval * 1440))
minutes = totalminutes Mod 60
hours = totalhours Mod 24

Text3.Text = Format(totalhours & [Ô]:[Ô] & minutes, [Ô]hh:mm[Ô])

End Sub
Faça seu login para responder