Arredondar para o minuto mais próximo:
ActiveCell.Value = Int(Time * 24 * 60) / (24 * 60)
Ou
ActiveCell.Value = TimeSerial(Hour(Time),Minute(Time),0)
Eu tenho uma macro de "quadro de horários" para horários de entrada e saída para os funcionários usarem no trabalho. A macro que tenho é esta:
ActiveCell.Value = Time
ActiveCell.NumberFormat = "h:mm AM/PM"
Funciona bem e só é exibido como "7:30 AM", como exemplo, mas no campo de edição, há segundos e isso pode fazer o tempo de deslocamento (fórmula = IF (OR (C2="", F2=""), "", ((F2-C2) - (E2-D2)) * 24)) desligado por um minuto se os segundos não estiverem alinhados, mas não pagamos em segundos, apenas alguns minutos. Existe uma maneira de modificar a macro onde apenas a hora e o minuto são capturados. A formatação não corrige isso. Eu estou bem com ele retornando "7:30:00 AM" cada vez e não os segundos reais. Obrigada!
Arredondar para o minuto mais próximo:
ActiveCell.Value = Int(Time * 24 * 60) / (24 * 60)
Ou
ActiveCell.Value = TimeSerial(Hour(Time),Minute(Time),0)
Você também pode tentar:
ActiveCell.Value = Format(range("D2"), "HH:MM")
Observação: A célula D2
tem a fórmula que calcula a hora que você mostrou na pergunta acima.
Ou no lugar de ActiveCell você também pode usar os seguintes:
Selection.NumberFormat = "h:mm"
Range("E327").NumberFormat = "hh:mm"
Tags time microsoft-excel macros vba