Guida VBA per grafici e grafici

Sommario

I grafici e i grafici di Excel vengono utilizzati per visualizzare visivamente i dati. In questo tutorial, tratteremo come utilizzare VBA per creare e manipolare grafici ed elementi del grafico.

È possibile creare grafici incorporati in un foglio di lavoro o grafici sui propri fogli grafici.

Creazione di un grafico incorporato utilizzando VBA

Abbiamo l'intervallo A1: B4 che contiene i dati di origine, mostrato di seguito:

È possibile creare un grafico utilizzando il metodo ChartObjects.Add. Il codice seguente creerà un grafico incorporato nel foglio di lavoro:

12345678 Sub CreateEmbeddedChartUsingChartObject()Dim embeddedchart As ChartObjectSet embeddedchart = Sheets("Sheet1").ChartObjects.Add(Left:=180, Width:=300, Top:=7, Height:=200)embeddedchart.Chart.SetSourceData Source:=Sheets("Sheet1").Range("A1:B4")Fine sottotitolo

Il risultato è:

Puoi anche creare un grafico usando il metodo Shapes.AddChart. Il codice seguente creerà un grafico incorporato nel foglio di lavoro:

12345678 Sub CreateEmbeddedChartUsingShapesAddChart()Dim grafico incorporato come formaSet embeddedchart = Sheets("Sheet1").Shapes.AddChartembeddedchart.Chart.SetSourceData Source:=Sheets("Sheet1").Range("A1:B4")Fine sottotitolo

Specificare un tipo di grafico utilizzando VBA

Abbiamo l'intervallo A1: B5 che contiene i dati di origine, mostrato di seguito:

È possibile specificare un tipo di grafico utilizzando la proprietà ChartType. Il codice seguente creerà un grafico a torta sul foglio di lavoro poiché la proprietà ChartType è stata impostata su xlPie:

123456789 Sub Specifica un tipo di grafico()Dim chrt As ChartObjectImposta chrt = Sheets("Sheet1").ChartObjects.Add(Left:=180, Width:=270, Top:=7, Height:=210)chrt.Chart.SetSourceData Source:=Sheets("Sheet1").Range("A1:B5")chrt.Chart.ChartType = xlPieFine sottotitolo

Il risultato è:

Questi sono alcuni dei tipi di grafici più diffusi che vengono solitamente specificati, sebbene ce ne siano altri:

  • xlArea
  • xlPie
  • xlLine
  • xlRadar
  • xlXYScatter
  • xlSuperficie
  • xlBubble
  • xlBarClustered
  • xlColumnClustered

Aggiunta di un titolo al grafico utilizzando VBA

Abbiamo un grafico selezionato nel foglio di lavoro come mostrato di seguito:

Devi prima aggiungere un titolo del grafico usando il metodo Chart.SetElement e quindi specificare il testo del titolo del grafico impostando la proprietà ChartTitle.Text.

Il codice seguente mostra come aggiungere un titolo del grafico e specificare il testo del titolo del grafico attivo:

123456 Sub AddingAndSettingAChartTitle()ActiveChart.SetElement (msoElementChartTitleAboveChart)ActiveChart.ChartTitle.Text = "Le vendite del prodotto"Fine sottotitolo

Il risultato è:

Nota: è necessario selezionare prima il grafico per renderlo il grafico attivo per poter utilizzare l'oggetto ActiveChart nel codice.

Modifica del colore di sfondo del grafico utilizzando VBA

Abbiamo un grafico selezionato nel foglio di lavoro come mostrato di seguito:

È possibile modificare il colore di sfondo dell'intero grafico impostando la proprietà RGB dell'oggetto FillFormat dell'oggetto ChartArea. Il codice seguente darà al grafico un colore di sfondo arancione chiaro:

12345 Sub AddingABackgroundColorToTheChartArea()ActiveChart.ChartArea.Format.Fill.ForeColor.RGB = RGB(253, 242, 227)Fine sottotitolo

Il risultato è:

È inoltre possibile modificare il colore di sfondo dell'intero grafico impostando la proprietà ColorIndex dell'oggetto Interior dell'oggetto ChartArea. Il codice seguente darà al grafico un colore di sfondo arancione:

12345 Sub AddingABackgroundColorToTheChartArea()ActiveChart.ChartArea.Interior.ColorIndex = 40Fine sottotitolo

Il risultato è:

Nota: la proprietà ColorIndex consente di specificare un colore in base a un valore da 1 a 56, ricavato dalla tavolozza preimpostata, per vedere quali valori rappresentano i diversi colori, fare clic qui.

Modifica del colore dell'area del grafico utilizzando VBA

Abbiamo un grafico selezionato nel foglio di lavoro come mostrato di seguito:

È possibile modificare il colore di sfondo solo dell'area del tracciato del grafico, impostando la proprietà RGB dell'oggetto FillFormat dell'oggetto PlotArea. Il codice seguente darà all'area del grafico un colore di sfondo verde chiaro:

12345 Sub AddingABackgroundColorToThePlotArea()ActiveChart.PlotArea.Format.Fill.ForeColor.RGB = RGB(208, 254, 202)Fine sottotitolo

Il risultato è:

Aggiunta di una legenda utilizzando VBA

Abbiamo un grafico selezionato nel foglio di lavoro, come mostrato di seguito:

Puoi aggiungere una legenda usando il metodo Chart.SetElement. Il codice seguente aggiunge una legenda a sinistra del grafico:

12345 Sub AddingALegend()ActiveChart.SetElement (msoElementLegendLeft)Fine sottotitolo

Il risultato è:

È possibile specificare la posizione della legenda nei seguenti modi:

  • msoElementLegendLeft: visualizza la legenda sul lato sinistro del grafico.
  • msoElementLegendLeftOverlay: sovrappone la legenda sul lato sinistro del grafico.
  • msoElementLegendRight: visualizza la legenda sul lato destro del grafico.
  • msoElementLegendRightOverlay: sovrappone la legenda sul lato destro del grafico.
  • msoElementLegendBottom: visualizza la legenda nella parte inferiore del grafico.
  • msoElementLegendTop: visualizza la legenda nella parte superiore del grafico.

Aggiunta di etichette dati utilizzando VBA

Abbiamo un grafico selezionato nel foglio di lavoro, come mostrato di seguito:

È possibile aggiungere etichette dati utilizzando il metodo Chart.SetElement. Il codice seguente aggiunge etichette dati all'estremità interna del grafico:

12345 Sub AddingADataLabels()ActiveChart.SetElement msoElementDataLabelInsideEndFine sottotitolo

Il risultato è:

È possibile specificare come sono posizionate le etichette dati nei seguenti modi:

  • msoElementDataLabelShow - visualizza le etichette dei dati.
  • msoElementDataLabelRight: visualizza le etichette dei dati a destra del grafico.
  • msoElementDataLabelLeft: visualizza le etichette dei dati a sinistra del grafico.
  • msoElementDataLabelTop: visualizza le etichette dei dati nella parte superiore del grafico.
  • msoElementDataLabelBestFit: determina l'adattamento migliore.
  • msoElementDataLabelBottom: visualizza le etichette dei dati nella parte inferiore del grafico.
  • msoElementDataLabelCallout: visualizza le etichette dei dati come callout.
  • msoElementDataLabelCenter: visualizza le etichette dei dati al centro.
  • msoElementDataLabelInsideBase - visualizza le etichette dei dati sulla base interna.
  • msoElementDataLabelOutSideEnd: visualizza le etichette dei dati all'estremità esterna del grafico.
  • msoElementDataLabelInsideEnd: visualizza le etichette dei dati all'estremità interna del grafico.

Aggiunta di un asse X e di un titolo in VBA

Abbiamo un grafico selezionato nel foglio di lavoro, come mostrato di seguito:

Puoi aggiungere un asse X e un titolo dell'asse X usando il metodo Chart.SetElement. Il codice seguente aggiunge un asse X e un titolo dell'asse X al grafico:

123456789 Sub AddingAnXAxisandXTitle()Con ActiveChart.SetElement msoElementPrimaryCategoryAxisShow.SetElement msoElementPrimaryCategoryAxisTitleHorizontalTermina conFine sottotitolo

Il risultato è:

Aggiunta di un asse Y e di un titolo in VBA

Abbiamo un grafico selezionato nel foglio di lavoro, come mostrato di seguito:

Puoi aggiungere un asse Y e un titolo dell'asse Y usando il metodo Chart.SetElement. Il codice seguente aggiunge un asse Y e un titolo dell'asse Y al grafico:

1234567 Sub AddingAYAxisandYTitle()Con ActiveChart.SetElement msoElementPrimaryValueAxisShow.SetElement msoElementPrimaryValueAxisTitleHorizontalTermina conFine sottotitolo

Il risultato è:

Modifica del formato numerico di un asse

Abbiamo un grafico selezionato nel foglio di lavoro, come mostrato di seguito:

È possibile modificare il formato del numero di un asse. Il codice seguente modifica il formato numerico dell'asse y in valuta:

12345 Sub ChangeTheNumberFormat()ActiveChart.Axes(xlValue).TickLabels.NumberFormat = "$#,##0.00"Fine sottotitolo

Il risultato è:

Modificare la formattazione del carattere in un grafico

Abbiamo il seguente grafico selezionato nel foglio di lavoro come mostrato di seguito:

È possibile modificare la formattazione dell'intero carattere del grafico, facendo riferimento all'oggetto carattere e modificandone il nome, lo spessore e le dimensioni del carattere. Il codice seguente modifica il tipo, il peso e la dimensione del carattere dell'intero grafico.

12345678910 Sub ChangingTheFontFormatting()Con ActiveChart.ChartArea.Format.TextFrame2.TextRange.Font.Name = "Times New Roman".ChartArea.Format.TextFrame2.TextRange.Font.Bold = True.ChartArea.Format.TextFrame2.TextRange.Font.Size = 14Termina con

Il risultato è:

Eliminazione di un grafico utilizzando VBA

Abbiamo un grafico selezionato nel foglio di lavoro, come mostrato di seguito:

Possiamo utilizzare il seguente codice per eliminare questo grafico:

12345 Sub Eliminare il grafico()ActiveChart.Parent.DeleteFine sottotitolo

Facendo riferimento alla collezione ChartObjects

È possibile accedere a tutti i grafici incorporati nel foglio di lavoro o nella cartella di lavoro facendo riferimento alla raccolta ChartObjects. Abbiamo due grafici sullo stesso foglio mostrato di seguito:

Faremo riferimento alla raccolta ChartObjects per dare a entrambi i grafici sul foglio di lavoro la stessa altezza, larghezza, eliminare le linee della griglia, rendere uguale il colore di sfondo, dare ai grafici lo stesso colore dell'area del tracciato e rendere lo stesso colore della linea dell'area del tracciato colore:

12345678910111213141516 Sub ReferingToAllTheChartsOnASheet()Dim cht As ChartObjectPer ogni cht in ActiveSheet.ChartObjectscht.Altezza = 144.85cht.Larghezza = 246.61cht.Chart.Axes(xlValue).MajorGridlines.Deletecht.Chart.PlotArea.Format.Fill.ForeColor.RGB = RGB(242, 242, 242)cht.Chart.ChartArea.Format.Fill.ForeColor.RGB = RGB(234, 234, 234)cht.Chart.PlotArea.Format.Line.ForeColor.RGB = RGB(18, 97, 172)AvantiFine sottotitolo

Il risultato è:

Inserimento di un grafico sul proprio foglio grafico

Abbiamo l'intervallo A1: B6 che contiene i dati di origine, mostrato di seguito:

Puoi creare un grafico usando il metodo Charts.Add. Il codice seguente creerà un grafico sul proprio foglio grafico:

123456 Sub Inserimento AChartOnItsOwnChartSheet()Fogli("Foglio1").Intervallo("A1:B6").SelezionaGrafici.AggiungiFine sottotitolo

Il risultato è:

Guarda alcuni dei nostri altri tutorial sui grafici:

Grafici in Excel

Crea un grafico a barre in VBA

wave wave wave wave wave