SOMAR HORA
Boa tarde pessoal!
To precisando resolver a seguinte situação.
A rotina é para somar horas de 2 MaskEdBox. O que vou passar abaixo é apenas um exemplo para facilitar a compreensão:
tenho um form com:
02 - MaskEdBox (Propriedade Mak = ##:##:##)
01 - CommandButton
01 - Label
O Form possui o seguinte código:
Private Sub Command1_Click()
SomaHorasOS
End Sub
Private Sub SomaHorasOS()
Dim tempo As Long
Dim seg As Long, min As Long, hora As Long
Dim matriz
Dim matriz2
tempo = 0
[ô]Trabalha Tempo 1
matriz2 = Split(mskCadastro(0), [Ô]:[Ô])
tempo = tempo + (CLng(matriz2(0)) * 3600)
tempo = tempo + (CLng(matriz2(1)) * 60)
tempo = tempo + CLng(matriz2(2))
[ô]Trabalha Tempo 1
matriz2 = Split(mskCadastro(1), [Ô]:[Ô])
tempo = tempo + (CLng(matriz2(0)) * 3600)
tempo = tempo + (CLng(matriz2(1)) * 60)
tempo = tempo + CLng(matriz2(2))
seg = tempo Mod 60
tempo = tempo / 60
min = tempo Mod 60
hora = tempo / 60
Label1.Caption = Format(hora, [Ô]00[Ô]) & [Ô]:[Ô] & Format(min, [Ô]00[Ô]) & [Ô]:[Ô] & Format(seg, [Ô]00[Ô])
End Sub
Qdo entro com horas até 30min soma certo.
Qdo entro com horas acima de 30min é adicionado uma hora a mais.
Saberiam me dizer pq?
Obs: Essa rotina peguei na internet, a princÃpio tva mto bom, até eu perceber esse problema.
To precisando resolver a seguinte situação.
A rotina é para somar horas de 2 MaskEdBox. O que vou passar abaixo é apenas um exemplo para facilitar a compreensão:
tenho um form com:
02 - MaskEdBox (Propriedade Mak = ##:##:##)
01 - CommandButton
01 - Label
O Form possui o seguinte código:
Private Sub Command1_Click()
SomaHorasOS
End Sub
Private Sub SomaHorasOS()
Dim tempo As Long
Dim seg As Long, min As Long, hora As Long
Dim matriz
Dim matriz2
tempo = 0
[ô]Trabalha Tempo 1
matriz2 = Split(mskCadastro(0), [Ô]:[Ô])
tempo = tempo + (CLng(matriz2(0)) * 3600)
tempo = tempo + (CLng(matriz2(1)) * 60)
tempo = tempo + CLng(matriz2(2))
[ô]Trabalha Tempo 1
matriz2 = Split(mskCadastro(1), [Ô]:[Ô])
tempo = tempo + (CLng(matriz2(0)) * 3600)
tempo = tempo + (CLng(matriz2(1)) * 60)
tempo = tempo + CLng(matriz2(2))
seg = tempo Mod 60
tempo = tempo / 60
min = tempo Mod 60
hora = tempo / 60
Label1.Caption = Format(hora, [Ô]00[Ô]) & [Ô]:[Ô] & Format(min, [Ô]00[Ô]) & [Ô]:[Ô] & Format(seg, [Ô]00[Ô])
End Sub
Qdo entro com horas até 30min soma certo.
Qdo entro com horas acima de 30min é adicionado uma hora a mais.
Saberiam me dizer pq?
Obs: Essa rotina peguei na internet, a princÃpio tva mto bom, até eu perceber esse problema.
Amigo, não precisa fazer tudo isso não.
basta, usar cdate. Exemplo abaixo
txtResult = CDate(h1.Text) + CDate(h2.Text)
[ô]h1 campo primeira hora
[ô]h2 campo segunda hora
[ô]txtResult está recebendo o resultado.
basta, usar cdate. Exemplo abaixo
txtResult = CDate(h1.Text) + CDate(h2.Text)
[ô]h1 campo primeira hora
[ô]h2 campo segunda hora
[ô]txtResult está recebendo o resultado.
If Text1 = [Ô][Ô] Or Text2 = [Ô][Ô] Then
MsgBox [Ô]Insira uma hora válida[Ô], vbExclamation, [Ô]Calcula hora[Ô]
Text1 = [Ô][Ô]
Text2 = [Ô][Ô]
Text1.SetFocus
Else
Datainicial = CDate(Text1)
Datafinal = CDate(Text2)
resulsoma = (CDate(CDate(Datafinal) + CDate(Datainicial)))
Label1 = CDate(resulsoma)
End If
MsgBox [Ô]Insira uma hora válida[Ô], vbExclamation, [Ô]Calcula hora[Ô]
Text1 = [Ô][Ô]
Text2 = [Ô][Ô]
Text1.SetFocus
Else
Datainicial = CDate(Text1)
Datafinal = CDate(Text2)
resulsoma = (CDate(CDate(Datafinal) + CDate(Datainicial)))
Label1 = CDate(resulsoma)
End If
da forma que vcs colocaram nao tah dando certo no meu caso.
Vou tentar expor a situação:
tenho um listview que possui uma coluna de horas como segue abaixo
Coluna de horas
16:56:00
23:34:43
10:00:00
20:21:01
56:32:26
Preciso percorrer todo o listview e somar todas essas horas e exibir em um label.
Da forma como vcs sugeriram tah retornando um resultado tipo esse abaixo:
01/01/1900 12:24:00
como resolvo isso? Grato
Vou tentar expor a situação:
tenho um listview que possui uma coluna de horas como segue abaixo
Coluna de horas
16:56:00
23:34:43
10:00:00
20:21:01
56:32:26
Preciso percorrer todo o listview e somar todas essas horas e exibir em um label.
Da forma como vcs sugeriram tah retornando um resultado tipo esse abaixo:
01/01/1900 12:24:00
como resolvo isso? Grato
o problema está aki
tempo = tempo + CLng(matriz2(2))
[txt-color=#e80000]seg = tempo Mod 60
tempo = tempo / 60
min = tempo Mod 60
hora = tempo / 60
Label1.Caption = Format(hora, [Ô]00[Ô]) & [Ô]:[Ô] & Format(min, [Ô]00[Ô]) & [Ô]:[Ô] & Format(seg, [Ô]00[Ô])[/txt-color]End Sub
O correto é...
hora= Int( tempo/3600) [ô] aki são calculadas qtas horas
tempo= tempo- (hora*3600) [ô]aki subtraimos do tempo a qtde de segundos referentes as horas inteiras
minuto= int(tempo/60) [ô] aki calculamos os minutos
segundo= tempo- (minuto*60) [ô]aki subtraimos do tempo a qtde de segundos referentes aos minutos inteiros sobrandos os segundos
Label1.Caption = Format(hora, [Ô]00[Ô]) & [Ô]:[Ô] & Format(min, [Ô]00[Ô]) & [Ô]:[Ô] & Format(seg, [Ô]00)
tempo = tempo + CLng(matriz2(2))
[txt-color=#e80000]seg = tempo Mod 60
tempo = tempo / 60
min = tempo Mod 60
hora = tempo / 60
Label1.Caption = Format(hora, [Ô]00[Ô]) & [Ô]:[Ô] & Format(min, [Ô]00[Ô]) & [Ô]:[Ô] & Format(seg, [Ô]00[Ô])[/txt-color]End Sub
O correto é...
hora= Int( tempo/3600) [ô] aki são calculadas qtas horas
tempo= tempo- (hora*3600) [ô]aki subtraimos do tempo a qtde de segundos referentes as horas inteiras
minuto= int(tempo/60) [ô] aki calculamos os minutos
segundo= tempo- (minuto*60) [ô]aki subtraimos do tempo a qtde de segundos referentes aos minutos inteiros sobrandos os segundos
Label1.Caption = Format(hora, [Ô]00[Ô]) & [Ô]:[Ô] & Format(min, [Ô]00[Ô]) & [Ô]:[Ô] & Format(seg, [Ô]00)
Perfeito
vc apenas mudou o nome das variáveis e esqueceu de fechar aspas. Era isso msm que eu tva precisando vlw PH1959
hora= Int( tempo/3600) [ô] aki são calculadas qtas horas
tempo= tempo- (hora*3600) [ô]aki subtraimos do tempo a qtde de segundos referentes as horas inteiras
[txt-color=#e80000]minuto[/txt-color]= int(tempo/60) [ô] aki calculamos os minutos
[txt-color=#e80000]segundo[/txt-color]= tempo- ([txt-color=#e80000]minuto[/txt-color]*60) [ô]aki subtraimos do tempo a qtde de segundos referentes aos minutos inteiros sobrandos os segundos
Label1.Caption = Format(hora, [Ô]00[Ô]) & [Ô]:[Ô] & Format(min, [Ô]00[Ô]) & [Ô]:[Ô] & Format(seg, [Ô]00[txt-color=#e80000][Ô][/txt-color])
vc apenas mudou o nome das variáveis e esqueceu de fechar aspas. Era isso msm que eu tva precisando vlw PH1959
hora= Int( tempo/3600) [ô] aki são calculadas qtas horas
tempo= tempo- (hora*3600) [ô]aki subtraimos do tempo a qtde de segundos referentes as horas inteiras
[txt-color=#e80000]minuto[/txt-color]= int(tempo/60) [ô] aki calculamos os minutos
[txt-color=#e80000]segundo[/txt-color]= tempo- ([txt-color=#e80000]minuto[/txt-color]*60) [ô]aki subtraimos do tempo a qtde de segundos referentes aos minutos inteiros sobrandos os segundos
Label1.Caption = Format(hora, [Ô]00[Ô]) & [Ô]:[Ô] & Format(min, [Ô]00[Ô]) & [Ô]:[Ô] & Format(seg, [Ô]00[txt-color=#e80000][Ô][/txt-color])
Tópico encerrado , respostas não são mais permitidas