Notifications
Clear all

Sintaxe VBA para Dados Não Adjacentes - Gráfico

7 Posts
3 Usuários
0 Reactions
1,709 Visualizações
(@areias001)
Posts: 13
Active Member
Topic starter
 

Pessoal, estou com um seguinte problema:

A Sintaxe para alterar os valores de um gráfico em VBA é:

ActiveChart.SeriesCollection(1).Values = "='Dados - G.E.'!$A$1:$D$1"

Eu posso substituí-lo tranquilamente por um range:

ActiveChart.SeriesCollection(1).Values = Range("A1:C1")

Porém, quando os dados não são adjacentes, como nesse exemplo:

ActiveChart.SeriesCollection(1).Values =
"='Dados - G.E.'!A1:B1;'Dados - G.E.'!D1:E1"

Eu não consigo encontrar uma sintaxe correta utilizando o Range. Alguém sabe como dar um help?

 
Postado : 30/05/2016 10:38 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Tente assim :

With ActiveChart
    .SeriesCollection(1).Values = "='Dados - G.E.'!A1:B1"
    .SeriesCollection(2).Values = "='Dados - G.E.'!D1:E1"
End With

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 30/05/2016 1:55 pm
(@areias001)
Posts: 13
Active Member
Topic starter
 

Olá, Mauro! Agradeço sua resposta, mas no meu caso não funciona.

Talvez não tenha ficado claro o que eu preciso, é o seguinte:

Gravando o macro e selecionando os dados do gráfico eu tenho a seguinte função:

ActiveChart.SeriesCollection(1).Values =
"='Dados - G.E.'!A1:B1;'Dados - G.E.'!D1:E1"

O meu problema é transformar: "='Dados - G.E.'!A1:B1;'Dados - G.E.'!D1:E1" em um Range, algo como: Range(Cells(1,1),Cells(1,2));Range(Cells(1,4),Cells(1,5) - Só que isso não funciona, já tentei colocar & ";" & entre os dois e nada.

Acredito que deve haver alguma forma, porque no caso simples, quando os dados são adjacentes:
ActiveChart.SeriesCollection(1).Values = "='Dados - G.E.'!$A$1:$D$1"

Eu já testei, e consigo trocar por Range(Cells(1,1),Cells(1,4))

O exemplo que você me deu, me retornaria duas séries de dados diferentes, quando eu preciso de uma série só.

 
Postado : 31/05/2016 5:05 am
(@osvaldomp)
Posts: 858
Prominent Member
 

Experimentou substituir o ponto e vírgula pela vírgula?

... A1:B1;'Dados ...

... A1:B1,'Dados ...

Osvaldo

 
Postado : 31/05/2016 6:01 am
(@areias001)
Posts: 13
Active Member
Topic starter
 

Oi Osvaldo...

Sim já tentei, mas também da erro.

Meu objetivo não é utilizar "='Dados - G.E.'!A1:B1;'Dados - G.E.'!D1:E1" e sim encontrar a sintaxe correta utilizando o Range que dê esse resultado.

 
Postado : 31/05/2016 6:58 am
(@osvaldomp)
Posts: 858
Prominent Member
 

Oi Osvaldo...

Sim já tentei, mas também da erro.
É estranho, deveria funcionar. Lembrando que o gráfico deve estar selecionado ao rodar aquele comando.

Meu objetivo não é utilizar "='Dados - G.E.'!A1:B1;'Dados - G.E.'!D1:E1" e sim encontrar a sintaxe correta utilizando o Range que dê esse resultado.
Não entendi exatamente o que você quer, me parece que você quer utilizar variáveis para delimitar os intervalos. É isso? Veja se alguma das opções abaixo para os intervalos 'A1:B1, D1:E1' ajuda. Todas com vírgula, conforme eu sugeri antes.

ActiveChart.SeriesCollection(1).Values = _
"=('Dados - G.E.'!" & Range("A1:B1").Address & ",'Dados - G.E.'!" & Range("D1:E1").Address & ")"
ActiveChart.SeriesCollection(1).Values = _
"=('Dados - G.E.'!" & Range(Cells(1, 1), Cells(1, 2)).Address & ",'Dados - G.E.'!" & Range(Cells(1, 4), Cells(1, 5)).Address & ")"

Dim rng1 As String, rng2 As String
 rng1 = Range(Cells(1, 1), Cells(1, 2)).Address
 rng2 = Range(Cells(1, 4), Cells(1, 5)).Address
ActiveChart.SeriesCollection(1).Values = _
"=('Dados - G.E.'!" & rng1 & ",'Dados - G.E.'!" & rng2 & ")"

Osvaldo

 
Postado : 31/05/2016 8:24 am
(@areias001)
Posts: 13
Active Member
Topic starter
 

Olá, Oswaldo!

Funcionou, obrigado!

 
Postado : 06/06/2016 12:27 pm