Notifications
Clear all

Macro para calcular data final

6 Posts
3 Usuários
0 Reactions
1,404 Visualizações
(@mairon)
Posts: 40
Trusted Member
Topic starter
 

Boa noite pessoal

Preciso montar uma macro de conceito bem simples, apenas 3 colunas, já está praticamente pronta mas agarrei no finalzinho e realmente preciso da ajuda de vocês.

É o assim, o usuário coloca na célula a data/hora que uma ação irão começar, na próxima coluna coloca a qtde de horas que essa ação irá durar,e na terceira coluna é a saída no formato data/hora.

A questão é que tem q levar em consideração que o dia tem dez horas de trabalho, de 8:00 as 18:00 (ignorando almoço e finais de semana)

Sendo assim, as saídas devem ser dessa forma:
INÍCIO DURAÇÃO (Horas) TÉRMINO
1/8/16 8:00 10:00:00 1/8/16 18:00
1/8/16 8:00 11:00:00 2/8/16 9:00 --> 'Como a ação dura 11 hrs, então o loop incrementa a data inicial,se a hora passar de 18hrs, vira o dia começando a partir das 8:00, ou seja, uma tarefa iniciada em 1/8/16 8:00, e que gasta 11hrs pra fazer, vai terminar as 9hrs da manhã do dia seguinte.

Eu agarrei em duas coisas:
1) Marquei de vermelho na planilha (anexo)
2) se eu coloco qualquer minuto ela não recalcula

Segue abaixo o código da função que usei e anexo a planilha com os exemplos já ocorrendo.

Function calculahora(ByVal data_inicio As Date, ByVal horas As Date)

    Dim dias As Integer
    Dim x As Date
    Dim data_final As Date

    x = TimeSerial(10, 0, 0)  'Dia de trabalho de 10hrs
    data_final = data_inicio

    Do While TimeValue(horas) > TimeValue(x) 'Loop para ir "dissolvendo" as horas
        dias = dias + 1
        horas = horas - x
    Loop

    data_final = data_inicio + dias + horas
    calculahora = data_final

End Function
 
Postado : 06/09/2016 6:05 pm
(@engeel2014)
Posts: 207
Reputable Member
 

Caro colega, acredito que o erro está acontecendo na variável horas, pois se você inserir um valor menor que 24 ele interpretará como horas e fara o calculo correto, porem se informar um valor igual ou maior que 24 o Excel entenderá como data e dentro da sua rotina o resultado será incorreto. tentei aqui acertar mas não consegui. Talvez algum colega do fórum possa ajudá-lo melhor.

 
Postado : 07/09/2016 6:37 am
(@djunqueira)
Posts: 0
New Member
 

Isso é mais fácil fazer com fórmulas do q com macro.

 
Postado : 07/09/2016 6:42 am
(@mairon)
Posts: 40
Trusted Member
Topic starter
 

Obrigado pessoal

Isso, ocorre quando passa de 24 horas, o porém é que uma tarefa pode demorar mais de 24 hrs.
Com fórmula eu não consegui fazer, mas seria ótimo também, se alguém tiver alguma ideia por fórmula.

 
Postado : 07/09/2016 6:49 am
(@djunqueira)
Posts: 0
New Member
 

Veja a planilha anexa q ainda considera feriados.

 
Postado : 07/09/2016 10:35 pm
(@mairon)
Posts: 40
Trusted Member
Topic starter
 

Obrigado Djunqueira! Mas no meu caso eu preciso adicionar horas na data/hora inicial e a saída deve ser a data hora final . Eu resolvi separando as horas dos minutos, aí trabalhei com os valores inteiros e eliminei o problema de quando fica acima de 24 horas. Obrigado pessoal.

 
Postado : 11/09/2016 9:09 pm