Macro di Excel per disegnare il diagramma di grattacielo VBA


0

Sto cercando di creare un grafico xy in cui i valori x sono l'asse del tempo (colonna A) e i valori y si trovano nelle altre colonne. (nell'esempio solo C e D) Quando provo il mio codice dal basso, ottengo un grafico con asse temporale (quindi colonna A) e valori y tutte le altre colonne (B, C, D, E, ...) che è indesiderato.

Vedo che .seriescollection (1) e (2) sovrascrivono i valori y predefiniti (perché il mio intervallo è più piccolo), ma tutti gli altri (colonna B, D, E, ...) rimangono ancora nel grafico.

Qualche idea sul perché? Grazie in anticipo!

    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

Risposte:


1

Per me ha funzionato quando ho aggiunto 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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.