1
resposta

Formatar data para Tabela Dinâmica

Gostaria de uma ajuda para um projeto particular. Tenho uma entrada de dados por meio de formulário do VBA, um dos dados é a data. Esses dados são guardados em uma planilha Excel, origem de uma tabela dinâmica e um gráfico dinâmico. Porém, estou com dificuldade de fazer com que a tabela dinâmica enxergue a informação de data com o formato de data. Dentro do código VBA inseri a ação de transformar o formato da célula data conforme caminho do excel (Dados >> Textos em Colunas >> Data >> MDA), porém, a formatação inverte o dia com o mês e a tabela dinâmica não reconhece a formatação da data, desconsiderando a informação. A parte do código referente a data é:

'Incluir novas informações

    Range("A4").Select
    ActiveCell = Me.txtData.Text

'Formatar o texto como data (necessário a formatação do excel estar como texto)
    txtData = Format(txtData.Value, "date")
    Selection.NumberFormat = "mm/dd/yyyy;@"

 Dim i As Long

    For i = 1 To 1
    Columns(i).Select
            Selection.TextToColumns Destination:=Cells(1, i), DataType:=xlDelimited, _
            TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
            Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
            :=Array(1, 4), TrailingMinusNumbers:=True
    Next i

Mas quando eu atualizo a tabela dinâmica, ela desconsidera os lançamentos realizados pelo formulário, porque diz que não há informações formatadas como data. O que preciso mudar ou acrescentar ao código para que a tabela dinâmica reconheça a data corretamente?

1 resposta

Olá Ana, tudo bem? Espero que sim!

Desculpe pela demora em retornar.

Você pode modificar a linha Selection.NumberFormat = "mm/dd/yyyy;@" trocando a posição do dia com o mês, ficando da seguinte maneira: Selection.NumberFormat = "dd/mm/yyyy;@. Dessa forma a data ficará disposta na ordem de dia/mês/ano que será interpretado corretamente pela tabela dinâmica.

Ao utilizar o formulário Forms do VBA, para que o campo de inserção de texto seja identificado com formato de data, defina a variável como formato Date antes de receber o valor. Dessa forma o VBA identificará que aquele campo do formulário é do formato de data e não resultará nesse problema, sem que haja necessidade de um código para conversão.

Private Sub CommandButton1_Click()
    Dim Data as Date
    Data = TextBox1.Value
    Plan1.Range("A1").Value = Data
End Sub

Nesse código de exemplo, ao clicarmos no botão de um formulário, automaticamente o texto inserido no TextBox1 será entendido como formato de data e será salvo na célula A1 da Plan1 e não será necessário o código para conversão, a data já estará no formato brasileiro com dia/mês/ano.

Espero que tenha tirado sua dúvida.

Estou à disposição. Bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software