Erro ao Formatar Da...
 
Compartilhar:
Notifications
Clear all

Erro ao Formatar Data e Hora Célula


Kaleo_rs
Posts: 89
Registered
Topic starter
(@kaleo_rs)
Trusted Member
Entrou: 8 anos atrás

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 hhss) 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.

 

Responder
2 Respostas
EdsonBR
Posts: 1005
Moderator
(@edsonbr)
Especialista do Excel
Entrou: 7 anos atrás

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().

Responder
Kaleo_rs
Posts: 89
Registered
Topic starter
(@kaleo_rs)
Trusted Member
Entrou: 8 anos atrás

Muito obrigado pela explicação.

Responder
Compartilhar: