Excel Macro para desenhar o arranha-cêntrico traçar o VBA

0

Estou tentando criar um gráfico xy onde os valores x são o eixo do tempo (coluna A) e os valores y estão nas outras colunas. (no exemplo apenas C e D) Quando eu tento meu código a partir de baixo, eu obtenho um gráfico com o eixo de tempo (então, coluna A) e y valores todas as outras colunas (B, C, D, E, ...) que é indesejado.

Eu posso ver que o .seriescollection (1) e (2) sobrescrevem os valores y padrão (porque o meu intervalo é menor), mas todos os outros (coluna B, D, E, ...) ainda permanecem em o gráfico.

Alguma ideia do porquê? Obrigado antecipadamente!

    Sub grafieken()
'
' grafieken Macro
'
Dim sh As Worksheet
Dim chrt As Chart
Dim naaaam As String

naaam = ActiveWorkbook.ActiveSheet.Name

Set sh = ActiveWorkbook.Worksheets(naaam)
Set chrt = sh.Shapes.AddChart.Chart
With chrt
    'Data?
    .ChartType = xlXYScatter
    .SeriesCollection.NewSeries
    .SeriesCollection(1).Name = sh.Range("$C$1")
    .SeriesCollection(1).XValues = sh.Range("$A$2:$A$11")
    .SeriesCollection(1).Values = sh.Range("$C$2:$C$11")
    .SeriesCollection(2).Name = sh.Range("$D$1")
    .SeriesCollection(2).XValues = sh.Range("$A$2:$A$11")
    .SeriesCollection(2).Values = sh.Range("$D$2:$D$11")

    'Titles?
    .HasTitle = True
    .ChartTitle.Characters.Text = naaam

End With

End Sub
    
por Michthan 04.02.2016 / 14:55

1 resposta

1

Para mim, funcionou quando adicionei o SetSourceData :

Sub grafieken()
Dim sh As Worksheet
Dim chrt As Chart
Dim naaaam As String

naaam = ActiveWorkbook.ActiveSheet.Name

Set sh = ActiveWorkbook.Worksheets(naaam)
Set chrt = sh.Shapes.AddChart.Chart
With chrt
    'Data?
    .SetSourceData Source:=Range("Sheet1!$C$1:$D$11")
    .ChartType = xlXYScatter
    .SeriesCollection(1).Name = sh.Range("$C$1")
    .SeriesCollection(1).XValues = sh.Range("$A$2:$A$11")
    .SeriesCollection(1).Values = sh.Range("$C$2:$C$11")
    '.SeriesCollection.NewSeries ' removed
    .SeriesCollection(2).Name = sh.Range("$D$1")
    .SeriesCollection(2).XValues = sh.Range("$A$2:$A$11")
    .SeriesCollection(2).Values = sh.Range("$D$2:$D$11")

    'Titles?
    .HasTitle = True
    .ChartTitle.Characters.Text = naaam
End With
End Sub
    
por 04.02.2016 / 17:22