none
Formato data inverte as posições dia vs mês RRS feed

  • 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 If

    ao 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...


    terça-feira, 14 de março de 2017 21:16

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

    terça-feira, 14 de março de 2017 23:35
  • 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 ?

    sábado, 19 de dezembro de 2020 18:29
  • 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

    sábado, 19 de dezembro de 2020 19:02
  • https://youtu.be/VlIeZMB_BG4

    A melhor forma de agradecer e votar como util e / ou marcar como resposta. Anderson Diniz diniabr2011@gmail.com

    sábado, 19 de dezembro de 2020 19:43