Problemas ao formatar total de uma tabela dinâmica usando VBA

Anônima
2011-06-27T15:49:11+00:00

Caros,

Preciso forçar uma formatação padrão de uma coluna de totais de uma tabela dinâmica através de macro ou VBA.

Ao gravar a macro diretamente pelo Excel o código fica armazenado como

Activesheet.Pivottables("Tabela dinâmica1").PivotSelect _ "Seq[All;Total] 'Barro Alto' ABBA", xlDataAndLabel, True

Logo após gravar a macro, se eu rodo a mesma ele executa sem problemas, mas se fecho o Excel e abro novamente ele retorna a mensagem

 "Erro em tempo de execução '1004':

A fórmula não está completa. Certifique-se de que um colchete de finalização (]) não está faltando.

Se eu deixo apenas o Campo seq (sem as informações (ALL; Total) a macro roda, mas sem formatar a linha de Total que eu desejo.

Preciso saber como faço para selecionar os totais da coluna "Seq" apenas e formatar a mesma como desejo. Alguém sabe como posso solucionar isso?

Microsoft 365 e Office | Excel | Para uso doméstico | Windows

Pergunta bloqueada. Essa pergunta foi migrada da Comunidade de Suporte da Microsoft. É possível votar se é útil, mas não é possível adicionar comentários ou respostas ou seguir a pergunta.

0 comentários Sem comentários
Resposta aceita pelo autor da pergunta
Anônima
2011-07-08T04:51:41+00:00

Olá Flavio,

Consegui reproduzir o erro que você recebeu com seu código no seguinte cenário:

Durante a gravação da macro mantive selecionados nos campos de página da tabela dinâmica "Barro Alto" e "ABBA", porém antes de executar a macro alterei os valores dos campos de página de forma aleatória o que resultou no mesmo erro informado por você.

POSSÍVEIS SOLUÇÕES:

Solução 1 - Remova as referências as seleções nos campos de página no seu código.

Código gravado:Activesheet.Pivottables("Tabela dinâmica1").PivotSelect _ "Seq[All;Total] 'Barro Alto' ABBA", xlDataAndLabel, True

Código alterado:

ActiveSheet.PivotTables("PivotTable1").PivotSelect _

        "Seq[All;Total]", xlDataAndLabel, True

Desta forma independente da seleção nos campos de página as linhas de totais serão selecionadas e formatadas.

Solução 2 - Garanta que os campos de página manterão a mesma seleção do momento da gravação ou altere o código de forma que a seleção seja definida de forma dinâmica.

Em meus testes a solução 1 mostrou-se eficiente e de menor complexidade.

Espero tê-lo ajudado.

Esta resposta foi útil?

0 comentários Sem comentários

8 respostas adicionais

Classificar por: Mais útil
  1. Anônima
    2011-06-28T17:52:07+00:00

    Carlos,

    Fiz o teste com seu códifo e recebo a mensagem "Erro em tempo de execução '438'  - O objecto não aceita esta propriedade ou método.

    Ao depurar ele aponta como erro no XlDataAndLabel = True

    O estranho é que aparentemente o código anterior está funcionando. Até onde vi o código é o mesmo.

     ActiveSheet.PivotTables("Tabela dinâmica1").PivotSelect _

            "Seq[All;Total] 'Barro Alto' AABA", xlDataAndLabel, True

    Esta resposta foi útil?

    0 comentários Sem comentários
  2. Anônima
    2011-06-28T16:37:37+00:00

    Flávio,

    no meu código pt não é uma variável, mas a PivotTable. Ele formata o campo Seq. Você chegou a testar meu código?

    Esta resposta foi útil?

    0 comentários Sem comentários
  3. Anônima
    2011-06-28T14:43:01+00:00

    Olá Carlos,

    Obrigado, mas acredito que não seja isto.

    Existem as linhas referentes ao total (sum) campo Seq.

    A macro em si deveria selecionar este campo para que seja possível formatar todos os totais em um padrão.

    Pelo que entendi, seu código apenas seria para definir uma váriavel PT referenciando a mesma para o campo "Seq"

    Esta resposta foi útil?

    0 comentários Sem comentários
  4. Anônima
    2011-06-27T18:26:19+00:00

    Flavio,

    não sei se entendi bem o seu caso, mas veja se isso ajuda:

    Dim pt As PivotTable    Set pt = ActiveSheet.PivotTables("Tabela dinâmica 1")    With pt.PivotFields("Seq")        .xlDataAndLabel = True    End With

    Esta resposta foi útil?

    0 comentários Sem comentários