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