Notifications
Clear all

Erro ao Formatar Data e Hora Célula

3 Posts
2 Usuários
1 Reactions
1,180 Visualizações
Kaleo_rs
(@kaleo_rs)
Posts: 0
Trusted Member
Topic starter
 

Vamos a questão do problema: Ao formatar célula, foi personalizado uma coluna da linha 4 a 2000 com o seguinte formato especifico "dd/mm/yy hh:mm" e ao fazer isso mostra perfeitamente.

Porém quando uma MACRO é executada para inserir a data e hora na célula através do comando Format(now, "dd/mm/yy hh:mm:ss) e após a inclusão quando vou visualizar as células onde foi inserido a data e hora mostra a data corretamente mas a hora aparece com os segundos. Quando clico na célula editando e ao sair da célula os segundos não são mais mostrados. Achei estranho...

Já tentei inserir a data e hora na célula através do comando Format(now, "dd/mm/yy hh:mm") sem os segundos, eles não aparecem na célula, porém quando clico na célula eles são inserido automaticamente com ZEROS, mas ao sair da célula os segundos não são mostrados. Entretanto, andou ocorrendo data invertida, já que o comando DataValue(Format(now, "dd/mm/yy hh:mm") só trás a data.

espero ter exposto bem o problema.

 

 
Postado : 22/05/2021 6:54 pm
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

Boa noite, @kaleo_rs

A formatação da célula (Range.NumberFormat) é dominante em relação à do VBA (VBA.Format). Entretanto, a função VBA.Format retorna um texto e não número serial tipo Data/Hora. Então quando seu VBA lança o valor na célula, vai entrar lá como texto, por isso, ao vc fazer a sequência de entrar na célula e dar enter editando a célula o Excel volta a interpretar como Data/Hora corretamente.

Vc pode comprovar isso com um simples teste numa célula ao lado com a função  =ÉTEXTO(SuaCélula) antes e depois de editar o valor lançado pelo código. 

Sugestão: Não se preocupe com o formato de saída do VBA. Lance o valor na célula que o próprio formato da célula interpretará o resultado. Logicamente, o valor que parte do VBA deverá, nesse caso, ser uma variável tipo Date e não String. Se precisar, use a função de conversão CDate().

 
Postado : 22/05/2021 7:14 pm
Kaleo_rs reacted
Kaleo_rs
(@kaleo_rs)
Posts: 0
Trusted Member
Topic starter
 

Muito obrigado pela explicação.

 
Postado : 24/05/2021 12:20 pm