Notifications
Clear all

Remover rótulos do grafico

15 Posts
2 Usuários
0 Reactions
2,145 Visualizações
(@andre0803)
Posts: 13
Active Member
Topic starter
 

Boa tarde.

Sou novo no fórum, agora trabalho em uma área que utiliza muito Excel, apareceu uma solicitação e fica muito complicado fazer manualmente (um a um). na planilha que temos, existe uma linha para cada dia com seu respectivo valor, como são muitos dias, os valores estão se amontoando ficando muito poluído, me pediram para remover os rótulos e deixar apenas o rotulo do ultimo dia, como são muitos gráficos, perderei muito tempo fazendo um a um, tentei fazer uma macro, ele até funciona, mas como no meu teste eu removi os rótulos e deixei apenas o ultimo no dia 12/07, quando executo a mesma hoje, ele remove tudo, mas deixa o dia 12/7 com rotulo, quando na verdade o que deveria ficar é sempre o do dia anterior.

Poderiam me ajudar por gentileza?
Como fica complicado enviar a planilha por ser empresarial, vou passar um print para terem uma ideia.

 
Postado : 14/07/2016 12:00 pm
(@vbajr10)
Posts: 34
Eminent Member
 
Sub DatLab()
  Dim x  As Point
  Dim Eix, Graf As String
  Dim i As Integer
  
  Graf = "Aqui o nome do gráfico"
  Eix = "aqui o nome do eixo"
  
  ActiveSheet.ChartObjects(Graf).Activate
  ActiveChart.FullSeriesCollection(Eix).ApplyDataLabels
  For Each x In ActiveChart.FullSeriesCollection(Eix).Points
    i = i + 1
    x.DataLabel.Delete
  Next
  ActiveChart.FullSeriesCollection(Eix).Points(i).ApplyDataLabels
End Sub
 
Postado : 14/07/2016 8:38 pm
(@vbajr10)
Posts: 34
Eminent Member
 

Não dava certo por que você precisa declarar variáveis, e quando você grava uma macro ela grava constantes.

Mais simples ainda clica em todos os rotulos deleta, depois clica somente no último ponto até somente ele ficar selecionado e adiciona o rótulo. (Sem macros)

 
Postado : 14/07/2016 8:41 pm
(@andre0803)
Posts: 13
Active Member
Topic starter
 

Não dava certo por que você precisa declarar variáveis, e quando você grava uma macro ela grava constantes.

Mais simples ainda clica em todos os rótulos deleta, depois clica somente no último ponto até somente ele ficar selecionado e adiciona o rótulo. (Sem macros)

Boa Tarde.
Primeiramente, obrigado pela ajuda vbajr10.

Funcionou no eixo na cor vermelha no meu gráfico, porem tenho mais eixos (verde e azul) para efetuar a mesma tarefa, quando crio uma macro igual a que você passou para qualquer um deles (verde azul) não funciona, somente na linha vermelha esta correto, é retirado os rótulos e deixa apenas o ultimo.

Outra coisa, eu tenho vários gráficos nessa planilha e precisa efetuar essa tarefa em todos eles, tem como criar uma macro onde adiciono os nomes dos gráficos e eixos para remover os rótulos deixando apenas o ultimo?

Obrigado desde já.

 
Postado : 15/07/2016 1:02 pm
(@andre0803)
Posts: 13
Active Member
Topic starter
 

Bom dia.

Amigos, alguém consegue me ajudar por gentileza?

 
Postado : 18/07/2016 8:44 am
(@vbajr10)
Posts: 34
Eminent Member
 

Boa tarde!

Vai colando no mesmo sub as instruções do código mudando o nome do gráfico e eixo até obter todos, não é o melhor mas é simples e funcional e vai te ajudar.

Tchau

 
Postado : 18/07/2016 9:03 am
(@andre0803)
Posts: 13
Active Member
Topic starter
 

vbajr10, tentei fazer mas quando executo a macro não acontece nada, nao aparece erro, e nao altera nada, segue código abaixo, o que estou fazendo errado, poderia me ajudar por gentileza?

Sub RemoveRotulos()
  Dim x  As Point
  Dim Eix, Graf As String
  Dim i As Integer
  
  Graf = "Gráfico 65"
  Eix = "Usinagem Previsto"
  
  Graf = "Gráfico 66"
  Eix = "Usinagem Previsto"
  
  Graf = "Gráfico 67"
  Eix = "Usinagem Previsto"
  
  Graf = "Gráfico 65"
  Eix = "Usinagem Realizado"
  
  Graf = "Gráfico 66"
  Eix = "Usinagem Realizado"
  
  Graf = "Gráfico 67"
  Eix = "Usinagem Realizado"
  
  Graf = "Gráfico 65"
  Eix = "Injeção Realizado"
  
  Graf = "Gráfico 66"
  Eix = "Injeção Realizado"
  
  Graf = "Gráfico 67"
  Eix = "Injeção Realizado"
  
  ActiveSheet.ChartObjects(Graf).Activate
  ActiveChart.FullSeriesCollection(Eix).ApplyDataLabels
  For Each x In ActiveChart.FullSeriesCollection(Eix).Points
    i = i + 1
    x.DataLabel.Delete
  Next
  ActiveChart.FullSeriesCollection(Eix).Points(i).ApplyDataLabels
End Sub
 
Postado : 18/07/2016 10:32 am
(@vbajr10)
Posts: 34
Eminent Member
 

Andre boa noite!
Está errado. Se ninguém corrigir amanhã a noite corrijo, estou indo dormir.

 
Postado : 18/07/2016 6:38 pm
(@andre0803)
Posts: 13
Active Member
Topic starter
 

Andre boa noite!
Está errado. Se ninguém corrigir amanhã a noite corrijo, estou indo dormir.

Obrigado pela atenção vbajr10!

Eu não sou programador e também não tenho um nível expert em Excel, não consegui fazer essa tarefa, tentei de varias maneiras, o máximo que consegui foi remover os rótulos de todos os meus eixos dentro de 1 gráfico (até aí perfeito), mas o rotulo só fica no ultimo dia se realmente for ultimo dia nos meus dados, exemplo:

Minha macro remove todos rótulos de todos eixos, mas só deixa o rotulo de ultimo dia se o eixo estiver no ultimo dia do mês, quando está em qualquer dia que não seja o ultimo, não aparece o rotulo.

Em anexo deixo uma imagem para tentar ajudar na explicação.

Abaixo segue código que fiz com base no que vi aqui, pode ser que tenha varios erros, pois como disse nao sou programador, nao conheco a linguagem VB.

Sub RemoveRot()
  Dim x  As Point
  Dim Eix67, Eix67b, Eix67c, Graf67 As String
  Dim a, b, c As Integer
      
  Graf67 = "Gráfico 67"
  Eix67 = "Usinagem Realizado"
  Eix67b = "Injeção Realizado"
  Eix67c = "Usinagem Previsto"
    
'---------------------------------------------------------------
'Grafico 67
'Eixo Usinagem Realizado

  ActiveSheet.ChartObjects(Graf67).Activate
  ActiveChart.FullSeriesCollection(Eix67).ApplyDataLabels
  For Each x In ActiveChart.FullSeriesCollection(Eix67).Points
    a = a + 1
    x.DataLabel.Delete
  Next
  ActiveChart.FullSeriesCollection(Eix67).Points(a).ApplyDataLabels
'------------
  'Eixo Injeção Realizado
  
  ActiveChart.FullSeriesCollection(Eix67b).ApplyDataLabels
  For Each x In ActiveChart.FullSeriesCollection(Eix67b).Points
    b = b + 1
    x.DataLabel.Delete
  Next
  ActiveChart.FullSeriesCollection(Eix67b).Points(b).ApplyDataLabels
'------------
 'Eixo Usinagem Previsto
 
  ActiveChart.FullSeriesCollection(Eix67c).ApplyDataLabels
  For Each x In ActiveChart.FullSeriesCollection(Eix67c).Points
    c = c + 1
    x.DataLabel.Delete
  Next
  ActiveChart.FullSeriesCollection(Eix67c).Points(c).ApplyDataLabels
'----------------------------------------------------------------

  
End Sub
 
Postado : 19/07/2016 1:25 pm
(@vbajr10)
Posts: 34
Eminent Member
 

Oi. Envia a planilha com varios gráficos que vc usa que amanhã eu escrevo e te envio.

 
Postado : 19/07/2016 6:47 pm
(@andre0803)
Posts: 13
Active Member
Topic starter
 

Oi. Envia a planilha com varios gráficos que vc usa que amanhã eu escrevo e te envio.

Boa tarde vbajr10!

Em anexo vou colocar um Excel com uma parte do que faço, é complicado colocar um arquivo integral da empresa, com esse anexo você entenderá e acredito que conseguirá fazer a macro, o que faltará pra mim é dar continuidade no código adicionando os nomes de gráficos e eixos dos mais de 60 gráficos que tenho.

Se precisar de alguma informação é só falar.

Muito Obrigado.

 
Postado : 20/07/2016 11:54 am
(@vbajr10)
Posts: 34
Eminent Member
 

Boa tarde!

 
Postado : 20/07/2016 3:49 pm
(@andre0803)
Posts: 13
Active Member
Topic starter
 

Boa tarde!

Boa tarde.

Vbrjr10, eu testei em casa (excel 2007), porem apresenta erro, anexei duas telas com o erro, poderia verificar quando tiver um tempo por favor?
Nao executa nada, ja vai pra tela de depuração.

 
Postado : 20/07/2016 4:19 pm
(@andre0803)
Posts: 13
Active Member
Topic starter
 

Vbajr10,

Testei na versão Excel 2013 e não funcionou, não apareceu erro algum, porem só apresentou a MSGBox que você configurou e não alterou os rótulos.
Obs.: os nomes dos eixos são todos iguais, no seu código esta correto esses nomes, não precisei alterar.

 
Postado : 21/07/2016 1:47 pm
(@andre0803)
Posts: 13
Active Member
Topic starter
 

Bom dia.

Prezados, alguém consegue me ajudar por gentileza?

 
Postado : 25/07/2016 5:43 am