Inquiridor
Formato data inverte as posições dia vs mês

Pergunta
-
Boa tarde!
Se alguém puder ajudar! Desde já muito obrigado!
Meu problema é o seguinte:
Tenho um formulário em vba com o campo data inicial, o problema é que ao inserir ex:
02032010
coloquei o código para configurar a textbox:
If Len(txtInicio) = 8 Then
txtInicio.Value = FormatDateTime(Left(txtInicio.Value, 2) & "/" & Mid(txtInicio.Value, 3, 2) & "/" & Right(txtInicio.Value, 2))
End Ifao invés de retornar:
02/03/2010 (d,mm,yyyy)
retorna:
03/02/2010 (mm,d,yyyy)
Já tentei várias maneiras de formatar mas sempre troca as posições DIA vs MÊS...
- Editado Eder Rodrigues1 terça-feira, 14 de março de 2017 21:18
Todas as Respostas
-
Boa noite Eder.
A partir do Excel 2007 o VBA passou a ter esse comportamento de "inverter" as datas dependendo da ação que se executa. Na realidade ele está considerando que o usuário insere a data no formato padrão americano, que normalmente considera "mm/dd/yyyy".
Para resolver, basta "enganá-lo" fazendo a inversão antes. No seu caso:
txtInicio.Value = FormatDateTime(Mid(txtInicio.Value, 3, 2) & "/" & Left(txtInicio.Value, 2) & "/" & Right(txtInicio.Value, 2))
Abraço.Filipe Magno
-
Olá Filipe Magno
Verifico que é um especialista no vba
Gostava da sua ajuda:
Tenho uma Macro de Filtro avançado
Sub Macro1()
'
' Macro1 Macro
'
'
Application.CutCopyMode = False
Application.CutCopyMode = False
Application.CutCopyMode = False
Range("Tab_dados").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
Range("B2:L4"), CopyToRange:=Range("Macro!Extract"), Unique:=False
End Sub
Na minha Range de critério tenho células de data, contudo a macro não funciona para data com formato dd/mm/ano apenas com datas formato americano mm/dd/ano
Como posso resolver ?
-
Boa tarde Carlos.
Infelizmente existem somente três soluções para este caso (que eu conheça), mas nenhuma delas muito prática, na verdade:
- Você pode escrever as datas no formato americano nos critérios;
- Você pode não formatar as datas, exibindo o número interno (44184 ao invés de 19/12/2020, por exemplo);
- Você pode usar um intervalo auxiliar para realizar esta troca automaticamente por fórmulas ou mesmo macro (um pouco antes da ação de filtrar, por exemplo).
Note que existirá o mesmo problema para o caso da "," e "." decimal, necessitando também de ajustes antes de rodar a macro do filtro avançado.
Abraço.
Filipe Magno
-
https://youtu.be/VlIeZMB_BG4
A melhor forma de agradecer e votar como util e / ou marcar como resposta. Anderson Diniz diniabr2011@gmail.com