SUBTRAIR HORAS

DELEON 11/01/2011 09:23:00
#361834
Pessoal, tenho um text que contem a carga horaria do mes, e outro contem quanto deveria ser esta carga horaria, quero sbtrair esta carga horaria para obter as horas extra do mes

ex: txt_horas_atrabalhar.text = [Ô]180:00:00[Ô]
ex: txt_horas_trabalhadas.text = [Ô]181:40:23[Ô]

Então queria o resultado de txt_horas_atrabalhar.text - txt_horas_trabalhadas.text

Vlw!
JONATHANSTECKER 11/01/2011 09:32:54
#361836
TextBox1.text = Format(TimeValue([Ô]180:00:00[Ô]) - TimeValue([Ô]181:40:23[Ô]), [Ô]hh:mm:ss[Ô])
MARCELO.TREZE 11/01/2011 09:38:28
#361838
Resposta escolhida
Tente assim

Private Sub Command1_Click()
Dim aTrabalhar() As String
Dim Trabalhadas() As String
Dim Extras(3) As Integer
aTrabalhar = Split(txt_horas_atrabalhar.Text, [Ô]:[Ô])
Trabalhadas = Split(txt_horas_trabalhadas.Text, [Ô]:[Ô])
For F = 0 To 2
If aTrabalhar(F) < Trabalhadas(F) Then
Extras(F) = CInt(Trabalhadas(F)) - CInt(aTrabalhar(F))
End If
Next F

MsgBox Extras(0) & [Ô]:[Ô] & Format(Extras(1), [Ô]00[Ô]) & [Ô]:[Ô] & Format(Extras(2), [Ô]00[Ô])
End Sub

MARCELO.TREZE 11/01/2011 09:42:11
#361839
Só uma observação o TimeValue não vai trabalhar com horas maiores que 24
JONATHANSTECKER 11/01/2011 09:43:52
#361841
Putz, é verdade Marcelo, viajei...
Da forma que fiz não funciona para horas maiores que 23:59:59 que corresponde a 01 dia.
MARCELO.TREZE 11/01/2011 11:44:02
#361857
no código eu verifico se a hora trabalhada é maior que as horas a trabalhar, do contrário não seria extra, ou seria?

MARCELO.TREZE 11/01/2011 12:10:04
#361862
entendi o problema

código alterado

Private Sub Command1_Click()
Dim aTrabalhar() As String
Dim Trabalhadas() As String
Dim Extras(3) As Integer
aTrabalhar = Split([Ô]180:00:00[Ô], [Ô]:[Ô])
Trabalhadas = Split([Ô]179:00:23[Ô], [Ô]:[Ô])

If aTrabalhar(0) <= Trabalhadas(0) Then
Extras(0) = CInt(Trabalhadas(0)) - CInt(aTrabalhar(0))

If aTrabalhar(1) <= Trabalhadas(1) Then
Extras(1) = CInt(Trabalhadas(1)) - CInt(aTrabalhar(1))

If aTrabalhar(2) <= Trabalhadas(2) Then
Extras(2) = CInt(Trabalhadas(2)) - CInt(aTrabalhar(2))
End If

End If

End If

MsgBox Extras(0) & [Ô]:[Ô] & Format(Extras(1), [Ô]00[Ô]) & [Ô]:[Ô] & Format(Extras(2), [Ô]00[Ô])
End Sub


a logica é a seguinte, as horas trabalhadas devem ser maior que as horas A trabalhar, para se retornar as extra do contrario, retornará 00:00:00 ou seja nenhuma extra
DELEON 11/01/2011 13:30:00
#361876
MARCELO-TREZE,

Ficou Bacana, mas eu prescizaria saber se o funcionario esta me devendo horas tbm, não somente as horas extras, ai tirei os if do cod e funcionou mas porem so que tem um detalhe, se eu coloco 180:00:00 a trabalhar e coloco que ele trabalhou 179:30:10 o resultado é 01:30:10 sendo que o correto seria 00:30:50, teria algo a fazer para que fique desta forma? grato!
MARCELO.TREZE 11/01/2011 14:14:43
#361879
to refazendo
MARCELO.TREZE 11/01/2011 14:26:08
#361883
novo código


Private Sub Command1_Click()
Dim aTrabalhar() As String
Dim Trabalhadas() As String
Dim TotalEmSegundosAT As Long
Dim TotalEmSegundosTB As Long
Dim ResultadoSegundos As Long
Dim Seg As Long
Dim Min As Integer
Dim Hor As Integer

aTrabalhar = Split([Ô]180:00:00[Ô], [Ô]:[Ô])
Trabalhadas = Split([Ô]179:30:23[Ô], [Ô]:[Ô])

TotalEmSegundosAT = (aTrabalhar(0) * 3600) + (aTrabalhar(1) * 60) + aTrabalhar(2)
TotalEmSegundosTB = (Trabalhadas(0) * 3600) + (Trabalhadas(1) * 60) + Trabalhadas(2)

ResultadoSegundos = TotalEmSegundosTB - TotalEmSegundosAT

Seg = ResultadoSegundos Mod 60
Min = ((ResultadoSegundos - Seg Mod 3600) / 60)
Hor = ((ResultadoSegundos - Min) - Seg) / 3600

If ResultadoSegundos < 0 Then
MsgBox [Ô]O funcionario deve [Ô] & Hor & [Ô]:[Ô] & Format(Abs(Min), [Ô]00[Ô]) & [Ô]:[Ô] & Format(Abs(Seg), [Ô]00[Ô]) & [Ô] horas[Ô]
Else
MsgBox [Ô]O funcionario fez [Ô] & Hor & [Ô]:[Ô] & Format(Abs(Min), [Ô]00[Ô]) & [Ô]:[Ô] & Format(Abs(Seg), [Ô]00[Ô]) & [Ô] horas Extras[Ô]
End If

End Sub

DELEON 12/01/2011 09:29:11
#361979
Cara, la vem eu Amolar,rsrs

tenta mudar a hora Trabalhadas ex: = Trabalhadas = Split([Ô]178:30:23[Ô], [Ô]:[Ô]) POR Trabalhadas = Split([Ô]177:30:23[Ô], [Ô]:[Ô])

o resultado esta dando certo nas horas e nos segundos mas os minutos ficam assim 149, ou 87, e tinha que ir até 60!

olha ai e me fala aki... vlw!!!!
Página 1 de 2 [18 registro(s)]
Tópico encerrado , respostas não são mais permitidas