Notifications
Clear all

Soma de Horários

13 Posts
3 Usuários
0 Reactions
2,546 Visualizações
 Luk
(@luk)
Posts: 44
Eminent Member
Topic starter
 

Pessoal, não sei se estou fazendo certo, tinha pedido ajuda num tópico antes e consegui resolver já tinha dado como resolvido
mas queria só complementar uma pergunta ao Wagner...Naquele exemplo que ele me mandou que foi espetacular! Como faria se fosse somar as datas
Exemplo; 1:30 +1:30 = 3:00

Vou precisar além da multiplicação, também a soma naquele mesmo formato;
Desculpe pelo incomodo, e se estou fazendo algo errado...

Att,
Luk.

 
Postado : 06/11/2017 11:09 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Não vi o exemplo do Wagner, mas veja se consegue ajustar :

Sub Somar_Horas()
    
    hora1 = CDate("01:30")
    hora2 = CDate("01:30")
    
    MsgBox (CDate(CDate(hora2) + CDate(hora1)))
    
End Sub

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 06/11/2017 11:25 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

Luk,

Creio que com esse código que o Mauro colocou para você deve resolver a questão.

Por gentileza, vote positivamente clicando na mãozinha existente ao lado da ferramenta CITAR. Você está esquecendo de agradecer...

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 06/11/2017 11:37 am
 Luk
(@luk)
Posts: 44
Eminent Member
Topic starter
 

sou novato no Fórum, mas vou fazer!

Neste codigo que me enviou onde faço a alteração para criar a soma?

    Dim ValorCusto As Double
    Dim QtdeHoras As Date
    Dim ValorHoras As Double
    Dim TempoEmSegundos As Long
    
    ValorCusto = CDbl(txtCustoHora)
    QtdeHoras = txtTempoTrab
    
    TempoEmSegundos = (Hour(txtTempoTrab) * 3600) + (Minute(txtTempoTrab.Text) * 60)
    
    ValorHoras = (ValorCusto * TempoEmSegundos) / 3600
    txtValor = Format(ValorHoras, "currency")
 
Postado : 06/11/2017 11:46 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Como eu disse, não tenho como ver o exemplo postado, mas pela rotina que indicou, vejo que tem :
01 textbox Txt_Custo
01 textbox Txt_QtdeHoras
01 textbox Txt_ValorHora

Se for isto, como quer somar dois valores, acredito que irá adicionar outro textbox para digitar a hora, então adicione e renomeie para Txt_QtdeHoras2 e utilize a rotina abaixo.

Private Sub CommandButton1_Click()
    Dim ValorCusto As Double
    Dim ValorHoras As Double
    Dim TempoEmSegundos As Long
    
    ValorCusto = CDbl(Txt_Custo.Text)
    
    'Somamos e convertemos as horas do Txt_QtdeHoras com as horas no Txt_QtdeHoras2
    TempoEmSegundos = (Hour(Txt_QtdeHoras.Text) * 3600) + (Minute(Txt_QtdeHoras.Text) * 60) + (Hour(Txt_QtdeHoras2.Text) * 3600) + (Minute(Txt_QtdeHoras2.Text) * 60)
    
    'Multiplicamos
    ValorHoras = (ValorCusto * TempoEmSegundos) / 3600
    
    Txt_ValorHora.Text = Format(ValorHoras, "#,##0.00")

End Sub

qq duvida retorne.

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 06/11/2017 12:17 pm
 Luk
(@luk)
Posts: 44
Eminent Member
Topic starter
 

Mauro, nessa minha necessidade não precisaria mais multiplicar, preciso somente somar data 1 com data 2
desculpe não me expressei direto,

Exemplo: agora só queria somar data1 . data2 no formato que o wagner me mandou >>>> 1:30 + 1:30 = 3:00

só preciso do formato, mas as textbox são outras agora, Exemplo: txtResultado = txtDataInico + txtDaTaFim queria saber encaixar estas txt no exemplo abaixo,

Dim ValorCusto As Double
Dim QtdeHoras As Date Data1
Dim ValorHoras As Double Data2
Dim TempoEmSegundos As Long

ValorCusto = CDbl(txtCustoHora)
QtdeHoras = txtTempoTrab

TempoEmSegundos = (Hour(txtTempoTrab) * 3600) + (Minute(txtTempoTrab.Text) * 60)

ValorHoras = (ValorCusto * TempoEmSegundos) / 3600
txtValor = Format(ValorHoras, "currency")

Agradeço desde já, pela paciência, e ajuda que estão disponibilizando...
Atenciosamente,
Luk.

 
Postado : 06/11/2017 12:30 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Fazer as coisas na correria e sem ver o modelo deixamos escapar os detalhes, agora que reparei que citou DATAS.
Então está se referindo a DATAS ou HORAS ?

E porque temos a instrução para multiplicar e formatar o Total para Valor monetário ?

ValorHoras = (ValorCusto * TempoEmSegundos) / 3600
txtValor = Format(ValorHoras, "currency")

Detalhe por favor.

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 06/11/2017 12:59 pm
 Luk
(@luk)
Posts: 44
Eminent Member
Topic starter
 

Horas, estou meio atordoado aqui não consigo sair do lugar,
a soma é horas, Exemplo: txtResultadoHoras= txtHora1 + txtHora2

 
Postado : 06/11/2017 1:45 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Luk, na rotina que indiquei, a instrução que faz a soma está comentada e é a que você colocou dizendo que é a que o Wagner forneceu, é só ajusta-la, ficaria assim :

Estou me baseando pelos nomes que passou agora, sendo : 01 textbox = txtHora1 - 01 textbox = txtHora2 e 01 para o resultado = txtResultadoHoras

txtResultadoHoras = (Hour(txtHora1.Text) * 3600) + (Minute(txtHora1.Text) * 60) + (Hour(txtHora2.Text) * 3600) + (Minute(txtHora2.Text) * 60)

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 06/11/2017 1:54 pm
 Luk
(@luk)
Posts: 44
Eminent Member
Topic starter
 

Mauro, Por algum motivo não fechou esta dando o resultado 8400 as horas que usei como exemplo foi >>>>>> 01:10 + 01:10 = 8400 sendo que o correto seria 02:20

Att,

 
Postado : 06/11/2017 2:17 pm
 Luk
(@luk)
Posts: 44
Eminent Member
Topic starter
 

Mauro, deu certo seu código aqui, blz, mas me deparei um um problema, quando digito 01:30 + 01:30 ele retorna 03:00 perfeito nesta soma
mais se eu digitar 20:30 + 21:30 ele me retorna o valor de 18:00 e eu precisaria que me retornasse 01:00
Espero que tenha conseguido explicar minha necessidade...
Att, Luk.

 
Postado : 06/11/2017 2:43 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Não entendi a colocação "e eu precisaria que me retornasse 01:00"
A soma das horas 20:30 + 21:30 deverá retornar 42 horas; somente resultara em uma hora se for subtração e não adição.
Pode fornecer mais informação.
Como Info:
O VBA "entende" como hora até 23:59:59, ou seja um dia. Acima disso e acrecentado 1 (hum dia) e o total de horas até o proximo inteiro

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 06/11/2017 7:19 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

A maneira mais fácil de se fazer entender seria postar um modelo resumido do arquivo.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 06/11/2017 8:37 pm