Boa tarde e bem vindo, @Rafael-gois
Estou sem tempo agora pra solucionar totalmente a demanda, mas como vi que vc se vira bem no VBA, algumas coisas que identifiquei em seu código e que vc pode ir resolvendo, especialmente na Sub CalculoEfatual():
- Dimensione as variáveis Teorico, Inicio* e Termino como As Date e não As Double pois fica mais simples efetuar os cálculos depois;
- Cuidado com os nomes das variáveis: vc dimensionou uma variável como *Incio (faltou o "i"). Use sempre o Option Explicit no topo do código para forçar declarar as variáveis;
- Use a função de conversão CDate para converter as Strings das TextBox para Dates;
- Atenção para o fato do VBA não lidar com datas e horas exatamente como o Excel, embora sejam bem semelhantes: lá no Excel, vc pode inserir tranquilamente horas maiores que 24 que o Excel automaticamente transforma em uma data válida considerando cada múltiplo de 24 como um dia a mais à partir de 01/01/1900. Já no VBA, acusaria um erro se vc tentasse converter, por exemplo, CDate("25: 00: 00 "). Portanto tem que considerar tratamento dessa situação no seu código;
- Ao final, para formatar a saída em porcentagem, vc poderá usar a função Format, mais ou menos assim:
txtEfatual.Value = Format(Total, "0.00%");
- Outras funções do VBA que podem ser úteis em seu código: IsDate, TimeSerial, TimeValue, DateAdd, a divisão inteira ou quociente n1\n2 e a função n1 Mod n2.
- Obs.: os espaços extras em algumas descrições e fórmulas é pra tentar burlar o mau funcionamento do mecanismo deste fórum**.
(**@eron, temos que consertar isso urgentemente! É um fórum predominantemente de fórmulas e códigos as fórmulas estão ficando sem sentido, erradas, sistematicamente. De onde vem essa "autocorreção" inútil? Não existia esse problema antes).
Postado : 28/12/2021 4:38 pm