Questão ActiveCell.Value = Tempo vba sem segundos


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"

Ele funciona bem e só é exibido como "7:30 AM", como um exemplo, mas no campo de edição, há segundos e isso pode fazer o tempo de mudança (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. Obrigado!


0


origem




Respostas:


Arredondar para o minuto mais próximo:

 ActiveCell.Value = Int(Time * 24 * 60) / (24 * 60)

Ou

ActiveCell.Value = TimeSerial(Hour(Time),Minute(Time),0)

2





Você pode tentar isso também:

ActiveCell.Value = Format(range("D2"), "HH:MM")

Nota, Célula D2 tem fórmula calculando o tempo que você tem mostrado na pergunta acima.

Ou  no lugar de Célula ativa você pode usar os seguintes também:

Selection.NumberFormat = "h:mm"
Range("E327").NumberFormat = "hh:mm"

0