Danleonhart Postado Outubro 28, 2010 Denunciar Share Postado Outubro 28, 2010 Pessoal vejam esse video e me expliquem como posso corrigir este erro...Video.Trata-se de horas & Minutos...assim está o script do BotãoPrivate Sub cmd_calc_Click() t3.Text = Format(TimeValue(mk2.Text) - TimeValue(mk1.Text), "hh:mm") End SubHá 2 MaskEdBox e 1 TextBoxLí diversos assuntos sobre TimeSerial & TimeValue mas sem um exemplo prático ficar dificil entender afundos... Grato a todos ! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Anderson Fernandes Postado Outubro 28, 2010 Denunciar Share Postado Outubro 28, 2010 Olá!No seu código tem apenas o horário, porem também é necessário a data para saber se é o mesmo dia ou não.'SEGUNDO PARA TEMPO. Ex: 25 segs = 00:25 // 247 segs = 04:07 // Funciona até com dias! Public Function Seg2Tempo(ByVal Segundos As Long) As String Dim X As Integer, Conta As Long Dim xDias As Long, xHoras As Long, xMinutos As Long, xSegundos As Long Conta = Segundos xDias = Conta \ 86400: Conta = Conta - (xDias * 86400) xHoras = Conta \ 3600: Conta = Conta - (xHoras * 3600) xMinutos = Conta \ 60: Conta = Conta - (xMinutos * 60) xSegundos = Conta Seg2Tempo$ = IIf(Segundos >= 86400, xDias & IIf(xDias > 1, " dias + ", " dia + "), vbNullString) & IIf(Segundos >= 3600, Format(xHoras, "0#") & ":", vbNullString) & Format(xMinutos, "0#") & ":" & Format(xSegundos, "0#") End Function Private Sub Form_Load() Text1 = Now() Text2 = DateAdd("n", 5, Now()) End Sub Private Sub Command1_Click() Text3 = Seg2Tempo(DateDiff("s", Text1, Text2)) End SubVeja se este exemplo te serve de algo!t+!!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Outubro 28, 2010 Denunciar Share Postado Outubro 28, 2010 o q você queria q acontecesse quando o primeiro fosse menor?? q ficasse negativo??se for isso, o resultado traz o sinal certinho, mas ele é perdido na hora do format().se você guardar numa variavel, você pode acrescentar no textbox:Private Sub cmd_calc_Click() Dim t As Integer t = TimeValue(mk2.Text) - TimeValue(mk1.Text) If t < 0 Then t3.Text = "-" Else t3.Text = "" End If t3.Text = t3.Text & Format(t, "HH:MM")End Sub[/code] Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Danleonhart Postado Outubro 28, 2010 Autor Denunciar Share Postado Outubro 28, 2010 @Kuroi... A intenção é de que quando chegar em 23:00 ele zere...mas dê a diferença...tipo: 23:40 as 00:10 = 00:30...a opção do Anderson Fernandes funciona, porém preciso setar "data"... e para neu Form só vai ficar à mostra as caixas de Mask e o TextBox com o resultado... Serve tambem se ficar desta forma: 23:10 as 01:10 = "120"pois será um tipo de relatorio em que a diferença será anotada em minutos...mas do jeito que for apresentada serve!Obrigado ! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Anderson Fernandes Postado Outubro 28, 2010 Denunciar Share Postado Outubro 28, 2010 @Kuroi... A intenção é de que quando chegar em 23:00 ele zere...mas dê a diferença...tipo: 23:40 as 00:10 = 00:30...a opção do Anderson Fernandes funciona, porém preciso setar "data"... e para neu Form só vai ficar à mostra as caixas de Mask e o TextBox com o resultado... Serve tambem se ficar desta forma: 23:10 as 01:10 = "120"pois será um tipo de relatorio em que a diferença será anotada em minutos...mas do jeito que for apresentada serve!Obrigado !Certo... então tente isto:Nos textbox deixe somente as horas e os minutos ("hh:nn")No exemplo a seguir o resultado nunca será negativomesmo q o segundo valor seja menor q o primeiro.exemplo: 02:30 e 02:29 = 23:59:0002:30 e 01:30 = 23:00:0002:30 e 03:31:01 = 01:01:01Segue o codigo:Aqui esta somente do Command1_Click(),a função Seg2Tempo continua a mesmaPrivate Sub Command1_Click() Dim dt As Date, dt1, dt2 Text1 = Trim(Text1) Text2 = Trim(Text2) dt = Now() If (Val(Mid(Text2, 1, 2)) < Val(Mid(Text1, 1, 2))) Or (Val(Mid(Text2, 1, 2)) = Val(Mid(Text1, 1, 2)) And Val(Mid(Text2, 4, 2)) < Val(Mid(Text1, 4, 2))) Then dt2 = CDate(Format(DateAdd("d", 1, dt), "dd/MM/yyyy") & " " & Text2) Else dt2 = CDate(Format(dt, "dd/MM/yyyy") & " " & Text2) End If dt1 = CDate(Format(dt, "dd/MM/yyyy") & " " & Text1) Text3 = Seg2Tempo(DateDiff("s", dt1, dt2)) End Sub Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Danleonhart Postado Outubro 30, 2010 Autor Denunciar Share Postado Outubro 30, 2010 @ Anderson... Cara, não se irrita tá...mas tem como você me explicar passo a passo estes scripts ?! tanto o Modulo quanto o Botão ?!Gosto de aprender bem detalhado, pois faz pouco menos de 2 meses que comecei a fuçar em programação (apesar de muitos falarem que VB-6 não é programação :P ) pela informação que me passar, vou tentar converter os valores finais em "minutos"... Obrigado por tudo !Acompanhando... Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Danleonhart
Pessoal vejam esse video e me expliquem como posso corrigir este erro...
Video.
Trata-se de horas & Minutos...assim está o script do Botão
Há 2 MaskEdBox e 1 TextBox
Lí diversos assuntos sobre TimeSerial & TimeValue mas sem um exemplo prático ficar dificil entender afundos...
Grato a todos !
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.