fbpx
.st0{fill:#FFFFFF;}

Excel Esperto, Grafici, Macro e VBA

Grafico Excel: come crearlo con le macro

 Maggio 6, 2020

By  Damiano Causale

  • Home
  • Grafico Excel: come crearlo con le macro

In questo articolo imparerai come fare un grafico su Excel passo dopo passo con il VBA.

Creare un grafico in 3 semplici passaggi sarà per te un gioco da ragazzi ma vuoi scoprire come farlo utilizzando il linguaggio delle macro?

Imparerai come creare un grafico con Excel semplicemente con un clic all'interno di un intervallo di celle contenente dei dati.

intervallo dati Excel

Scoprirai come aggiungere, modificare e posizionare un grafico Excel utilizzando il VBA.

Prima di procedere alla creazione del grafico procediamo al salvataggio del file come Cartella di lavoro con attivazione macro di Excel.

cartella di lavoro con attivazione macro excel

Il file di Excel potrà contenere le macro. Tuttavia, all'apertura del file ti verrà richiesto di attivare le macro Excel.

Come creare un grafico da codice VBA

La creazione di un grafico in Excel aiuta a comunicare a colpo d'occhio una quantità significativa di informazioni.

I grafici permettono di tradurre facilmente i dati numerici in forme facilmente comprensibili.

Per questo motivo le persone tendono ad apprezzare i grafici e li considerano degli strumenti indispensabili.

In Excel puoi procedere alla creazione dei grafici in modalità differenti: il VBA è una di queste.

Attraverso il linguaggio delle macro Excel puoi creare automaticamente grafici.

Attraverso questo articolo ti guiderò passo dopo passo attraverso la creazione di un grafico di Excel tramite VBA.

Alla fine di questo articolo sarai in grado di creare un grafico con un solo clic!!!

Bene, iniziamo!

Innanzitutto, apri l’Editor VBA e inserisci un modulo standard.

modulo standard vba

Dopo aver assegnato il nome alla macro, la prima fase è quella alla dichiarazione delle variabili. Attraverso la dichiarazione si chiede ad Excel di creare uno spazio in memoria per contenere un oggetto. Questo oggetto sarà il nostro grafico!

dichiarazione variabile vba per creazione grafico excel

La parola "Shape" in inglese significa forma. Stiamo dicendo ad Excel "crea uno spazio nella tua memoria per contenere una forma chiamata Grafico."

Potrai chiamare la forma come preferisci. Il nome non farà alcuna differenza.

Il secondo passaggio sarà la creazione vera e propria.

creazione grafico con il VBA

Questo codice può essere tradotto nel modo seguente:

"Aggiungi una forma, chiamata Grafico, all'interno del foglio di lavoro."

macro Excel per creare un grafico

Se andiamo ad eseguire la macro, il risultato sarà il seguente:

grafici in excel

Il grafico è vuoto in quanto non è stata specificata l’origine dati ovvero la cella selezionata è vuota.

Se al contrario, selezioniamo una cella contenente dei dati ed eseguiamo il codice, il risultato sarà differente.

come fare grafico in excel

Aggiungiamo un’altra porzione di codice.

grafici excel con il vba

La dichiarazione If … Else … End If è una istruzione condizionale.

Tradotto avremo:

"Se la cella attiva (ActiveCell.Value) NON è vuota (<> "") allora (Then) aggiungi il grafico (Set Grafico = ActiveSheet.Shapes.AddChart2) altrimenti (Else), nel caso contrario, esci dalla subroutine (Exit Sub) ed esci dall'istruzione If (End If)."

come creare grafico Excel con le macro

L’aggiunta di questo codice evita di creare un grafico quando la cella selezionata è vuota.

Il passaggio successivo è fare in modo che il grafico, all'interno del foglio di lavoro, sia unico ovvero non si creino ulteriori sovrapposizioni.

Pertanto chiederemo ad Excel di contare tutti i grafici ed eliminarli prima di avere mandato in esecuzione il codice per l’inserimento del nuovo grafico.

creare un grafico

Commentiamo il codice.

Dichiariamo un ulteriore variabile (Dim i) come numero intero (As Integer). Successivamente chiediamo ad Excel di contare tutte le forme ovvero i grafici presenti all'interno del foglio di lavoro attivo (ActiveSheet.Shapes.Count) attraverso il ciclo For … Next. Il ciclo andrà a contare i grafici presenti nel foglio e li eliminerà (ActiveSheet.Shapes(i).Delete).

creare un grafico con excel

Ora ci preoccuperemo di definire l'altezza, la larghezza e la posizione del grafico attraverso il seguente codice.

Prima però dobbiamo dichiarare delle costanti al di fuori del codice della Sub.

fare grafici excel

Successivamente i valori devono essere assegnati al grafico presente nel foglio attivo.

fare grafici con excel

L’istruzione With … End With facilita la scrittura e la lettura del codice.

La macro Excel ora apparirà così …

grafici con excel

A questo punto andremo a cambiare il colore al grafico.

A dati differenti deve corrispondere un colore delle barre del grafico differente.

Il seguente codice attiverà il grafico (ActiveSheet.ChartObjects(1).Activate) e gli assegnerà un colore sulla base del numero della colonna attiva.

VBA excel

Questo è possibile in quanto ad ogni colore corrisponde un numero che sarà determinato dal numero della colonna della cella selezionata (ActiveCell.Column).

macro Excel
grafico excel

Aggiungere etichette al grafico Excel

Per personalizzare il grafico aggiungeremo le etichette dati attraverso il seguente codice.

Aggiungere etichette al grafico

Il codice aggiunge le etichette all’estremità esterna delle barre del grafico. Inoltre, imposterà la dimensione dei caratteri a 14 e applicherà il Grassetto.

creare grafici su excel

A questo punto il codice della macro  sarà il seguente:

macro per creare un grafico

Grafico ed evento VBA Worksheet_SelectionChange

Infine, dobbiamo occuparci della parte più importante.

Occorre fare in modo che il grafico venga creato quando si fa un clic su una cella NON vuota.

Per far questo faremo ricorso ad un evento VBA.

L’evento sarà un’azione che viene eseguita quando accade qualcosa all'interno del foglio di lavoro che contiene i dati. Questo qualcosa sarà appunto un evento.

Nello specifico utilizzeremo l’evento Worksheet_SelectionChange.

Per selezionare l’evento fai doppio clic sul modulo foglio all’interno della finestra Progetto dell'Editor VBA.

modulo foglio VBA

Ora seleziona l’evento Worksheet_SelectionChange dal menu a tendina Routine.

Excel grafici | Evento VBA

L’evento sarà attivato ogni volta che c’è un cambio di selezione. Ma perché accada qualcosa è necessario chiedere ad Excel di compiere un'azione. Pertanto, all'interno dell’evento inserisci il codice seguente.

Macro VBA Excel

Non dovresti avere grosse difficolta a capire il significato dell’istruzione. Tuttavia esso può essere tradotto nel modo seguente:

"Se c'è un cambiamento di selezione e la cella (Worksheet_SelectionChange) NON è vuota (Target.Value <> "") esegui la macro (Call CreaGrafico)."

L’istruzione Call è una chiamata alla macro CreaGrafico.

evento VBA su Excel

Grafico Excel e gestione dell'errore VBA

Infine, passiamo ora alla gestione dell’errore.

Per evitare la visualizzazione di strani messaggi potrai aggiungere la seguente porzione di codice all'interno dell’evento.

Qualora dovessero verificarsi degli errori, Excel li scavalcherà andando al passaggio successivo!

A questo punto non dovrai far altro che fare un clic su una cella contenente i dati e vedrai comparire immediatamente il grafico relativo all'intervallo di dati selezionato.

grafici excel | grafico in excel con le macro

Ora sarai in grado di creare un grafico in Excel utilizzando il VBA!

Spero che questo articolo ti sia utile.

Qualora volessi saperne di più sulle macro Excel, ti suggerisco la lettura dei seguenti articoli:

Buon lavoro!

Damiano Causale


Mi chiamo Damiano Causale, istruttore Microsoft certificato, per lavoro aiuto aziende e privati nell'utilizzo di Excel.

Damiano Causale

Your email address will not be published. Required fields are marked

  1. Ciao Damiano, mi interessava la tua soluzione e d ho iniziato a costruirla finchè, arrivato alla linea
    .FullSeriesCollection(1) .datalabels.Format.TextFrame2.TextRangeFont..Size = 14
    mi dà un errore di compilazione, cioè non accetta questa istruzione. Sembra che nell.elenco l'istruzione DataLabels non esista...

    1. Ciao Lorenzo,
      ho verificato il funzionamento del codice e funziona correttamente. Che versione di Excel stai utilizzando?

      In ogni caso ti suggerisco la seguente modifica:

      1) RIMUOVI IL SEGUENTE CODICE
      .FullSeriesCollection(1).DataLabels.Format.TextFrame2.TextRange.Font.Size = 14
      .FullSeriesCollection(1).DataLabels.Format.TextFrame2.TextRange.Font.Bold = msoTrue

      2) INSERISCI IL SEGUENTE CODICE (dopo End With)
      Dim Etichette As DataLabel

      For Each Etichette In ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).DataLabels
      Etichette.Format.TextFrame2.TextRange.Font.Size = 14
      Etichette.Format.TextFrame2.TextRange.Font.Bold = msoTrue
      Next Etichette

      Fammi sapere se funziona;)
      Saluti
      Damiano

{"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}