Excel-diagrammen en grafieken worden gebruikt om gegevens visueel weer te geven. In deze zelfstudie gaan we in op het gebruik van VBA om grafieken en grafiekelementen te maken en te manipuleren.
U kunt ingesloten grafieken in een werkblad of grafieken op hun eigen grafiekbladen maken.
Een ingesloten diagram maken met VBA
We hebben het bereik A1:B4 dat de brongegevens bevat, zoals hieronder weergegeven:
U kunt een grafiek maken met de methode ChartObjects.Add. Met de volgende code wordt een ingesloten diagram op het werkblad gemaakt:
12345678 | Sub CreateEmbeddedChartUsingChartObject()Ingesloten diagram dimmen als ChartObjectSet embeddedchart = Sheets("Blad1").ChartObjects.Add(Links:=180, Breedte:=300, Boven:=7, Hoogte:=200)embeddedchart.Chart.SetSourceData Source:=Sheets("Blad1").Range("A1:B4")Einde sub |
Het resultaat is:
U kunt ook een grafiek maken met behulp van de Shapes.AddChart-methode. Met de volgende code wordt een ingesloten diagram op het werkblad gemaakt:
12345678 | Sub CreateEmbeddedChartUsingShapesAddChart()Ingesloten diagram dimmen als vormSet embeddedchart = Sheets("Blad1").Vormen.AddChartembeddedchart.Chart.SetSourceData Source:=Sheets("Blad1").Range("A1:B4")Einde sub |
Een grafiektype specificeren met VBA
We hebben het bereik A1:B5 dat de brongegevens bevat, zoals hieronder weergegeven:
U kunt een diagramtype opgeven met behulp van de eigenschap ChartType. Met de volgende code wordt een cirkeldiagram op het werkblad gemaakt, aangezien de eigenschap ChartType is ingesteld op xlPie:
123456789 | Sub SpecificeerAchartType()Dim chrt As ChartObjectStel chrt = Sheets ("Blad1") in. ChartObjects.Add (Links:=180, Breedte:=270, Boven:=7, Hoogte:=210)chrt.Chart.SetSourceData Source:=Sheets("Blad1").Range("A1:B5")chrt.Chart.ChartType = xlPieEinde sub |
Het resultaat is:
Dit zijn enkele van de populaire grafiektypen die meestal worden gespecificeerd, hoewel er andere zijn:
- xlArea
- xlPie
- xlLine
- xlRadar
- xlXYScatter
- xlSurface
- xlBubble
- xlBarGeclusterd
- xlKolomGeclusterd
Een grafiektitel toevoegen met VBA
We hebben een grafiek geselecteerd in het werkblad zoals hieronder weergegeven:
U moet eerst een grafiektitel toevoegen met de methode Chart.SetElement en vervolgens de tekst van de grafiektitel specificeren door de eigenschap ChartTitle.Text in te stellen.
De volgende code laat zien hoe u een grafiektitel toevoegt en de tekst van de titel van de actieve grafiek specificeert:
123456 | Sub AddingAndSettingAChartTitle()ActiveChart.SetElement (msoElementChartTitleAboveChart)ActiveChart.ChartTitle.Text = "De verkoop van het product"Einde sub |
Het resultaat is:
Opmerking: u moet eerst de grafiek selecteren om er de actieve grafiek van te maken om het ActiveChart-object in uw code te kunnen gebruiken.
De achtergrondkleur van de grafiek wijzigen met VBA
We hebben een grafiek geselecteerd in het werkblad zoals hieronder weergegeven:
U kunt de achtergrondkleur van het hele diagram wijzigen door de eigenschap RGB van het FillFormat-object van het ChartArea-object in te stellen. De volgende code geeft de grafiek een lichtoranje achtergrondkleur:
12345 | Sub toevoegenABackgroundColorToTheChartArea()ActiveChart.ChartArea.Format.Fill.ForeColor.RGB = RGB (253, 242, 227)Einde sub |
Het resultaat is:
U kunt ook de achtergrondkleur van het hele diagram wijzigen door de eigenschap ColorIndex van het Interior-object van het ChartArea-object in te stellen. De volgende code geeft de grafiek een oranje achtergrondkleur:
12345 | Sub toevoegenABackgroundColorToTheChartArea()ActiveChart.ChartArea.Interior.ColorIndex = 40Einde sub |
Het resultaat is:
Opmerking: Met de eigenschap ColorIndex kunt u een kleur specificeren op basis van een waarde van 1 tot 56, getekend uit het vooraf ingestelde palet, om te zien welke waarden de verschillende kleuren vertegenwoordigen, klik hier.
De kleur van het kaartplotgebied wijzigen met VBA
We hebben een grafiek geselecteerd in het werkblad zoals hieronder weergegeven:
U kunt de achtergrondkleur van alleen het plotgebied van het diagram wijzigen door de eigenschap RGB van het FillFormat-object van het PlotArea-object in te stellen. De volgende code geeft het plotgebied van de grafiek een lichtgroene achtergrondkleur:
12345 | Sub toevoegenABackgroundColorToThePlotArea()ActiveChart.PlotArea.Format.Fill.ForeColor.RGB = RGB(208, 254, 202)Einde sub |
Het resultaat is:
Een legende toevoegen met VBA
We hebben een grafiek geselecteerd in het werkblad, zoals hieronder weergegeven:
U kunt een legenda toevoegen met de methode Chart.SetElement. De volgende code voegt een legenda toe aan de linkerkant van de grafiek:
12345 | Sub AddingALegend()ActiveChart.SetElement (msoElementLegendLeft)Einde sub |
Het resultaat is:
U kunt de positie van de legenda op de volgende manieren specificeren:
- msoElementLegendLeft - geeft de legenda aan de linkerkant van de grafiek weer.
- msoElementLegendLeftOverlay - overlapt de legenda aan de linkerkant van de grafiek.
- msoElementLegendRight - geeft de legenda aan de rechterkant van de grafiek weer.
- msoElementLegendRightOverlay - overlapt de legenda aan de rechterkant van de grafiek.
- msoElementLegendBottom - geeft de legenda onder aan de grafiek weer.
- msoElementLegendTop - geeft de legenda bovenaan de grafiek weer.
Gegevenslabels toevoegen met VBA
We hebben een grafiek geselecteerd in het werkblad, zoals hieronder weergegeven:
U kunt gegevenslabels toevoegen met de methode Chart.SetElement. De volgende code voegt gegevenslabels toe aan de binnenkant van de grafiek:
12345 | SubADataLabels() toevoegenActiveChart.SetElement msoElementDataLabelInsideEndEinde sub |
Het resultaat is:
U kunt op de volgende manieren specificeren hoe de gegevenslabels worden gepositioneerd:
- msoElementDataLabelShow - gegevenslabels weergeven.
- msoElementDataLabelRight - geeft gegevenslabels aan de rechterkant van de grafiek weer.
- msoElementDataLabelLeft - geeft gegevenslabels aan de linkerkant van de grafiek weer.
- msoElementDataLabelTop - geeft gegevenslabels boven aan de grafiek weer.
- msoElementDataLabelBestFit - bepaalt de beste pasvorm.
- msoElementDataLabelBottom - geeft gegevenslabels onder aan de grafiek weer.
- msoElementDataLabelCallout - geeft gegevenslabels weer als een toelichting.
- msoElementDataLabelCenter - geeft gegevenslabels in het midden weer.
- msoElementDataLabelInsideBase - geeft gegevenslabels aan de binnenkant van de basis weer.
- msoElementDataLabelOutSideEnd - geeft gegevenslabels weer aan de buitenkant van de grafiek.
- msoElementDataLabelInsideEnd - geeft gegevenslabels aan de binnenkant van de grafiek weer.
Een X-as en titel toevoegen in VBA
We hebben een grafiek geselecteerd in het werkblad, zoals hieronder weergegeven:
U kunt een X-as en X-as titel toevoegen met behulp van de Chart.SetElement methode. De volgende code voegt een X-as en X-as titel toe aan het diagram:
123456789 | Sub toevoegenAnXAxisandXTitle()Met ActiveChart.SetElement msoElementPrimaryCategorieAxisShow.SetElement msoElementPrimaryCategorieAsTitelHorizontaalEindigt metEinde sub |
Het resultaat is:
Een Y-as en titel toevoegen in VBA
We hebben een grafiek geselecteerd in het werkblad, zoals hieronder weergegeven:
U kunt een titel voor de Y-as en de Y-as toevoegen met de methode Chart.SetElement. De volgende code voegt een titel voor de Y-as en de Y-as toe aan het diagram:
1234567 | Sub toevoegen van AYAxisandYTitle()Met ActiveChart.SetElement msoElementPrimaryValueAxisShow.SetElement msoElementPrimaireWaardeAsTitelHorizontaalEindigt metEinde sub |
Het resultaat is:
De getalnotatie van een as wijzigen
We hebben een grafiek geselecteerd in het werkblad, zoals hieronder weergegeven:
U kunt de getalnotatie van een as wijzigen. De volgende code verandert de getalnotatie van de y-as in valuta:
12345 | Sub WijzigenTheNumberFormat()ActiveChart.Axes(xlValue).TickLabels.NumberFormat = "$#,##0.00"Einde sub |
Het resultaat is:
De opmaak van het lettertype in een diagram wijzigen
We hebben de volgende grafiek geselecteerd in het werkblad zoals hieronder weergegeven:
U kunt de opmaak van het volledige diagramlettertype wijzigen door naar het lettertypeobject te verwijzen en de naam, het lettertype en de grootte te wijzigen. De volgende code verandert het type, het gewicht en de grootte van het lettertype van de hele grafiek.
12345678910 | Sub WijzigenTheFontFormatting()Met ActiveChart.ChartArea.Format.TextFrame2.TextRange.Font.Name = "Times New Roman".ChartArea.Format.TextFrame2.TextRange.Font.Bold = True.ChartArea.Format.TextFrame2.TextRange.Font.Size = 14Eindigt met |
Het resultaat is:
Een diagram verwijderen met VBA
We hebben een grafiek geselecteerd in het werkblad, zoals hieronder weergegeven:
We kunnen de volgende code gebruiken om deze grafiek te verwijderen:
12345 | Sub verwijderenTheChart()ActiveChart.Ouder.VerwijderenEinde sub |
Verwijzend naar de ChartObjects-collectie
U kunt toegang krijgen tot alle ingesloten grafieken in uw werkblad of werkmap door te verwijzen naar de ChartObjects-verzameling. We hebben twee grafieken op hetzelfde blad hieronder:
We zullen verwijzen naar de ChartObjects-collectie om beide grafieken op het werkblad dezelfde hoogte en breedte te geven, de rasterlijnen te verwijderen, de achtergrondkleur hetzelfde te maken, de grafieken dezelfde kleur van het plotgebied te geven en de kleur van de lijn van het plotgebied hetzelfde te maken kleur:
12345678910111213141516 | Sub VerwijzendToAllTheChartsOnASheet()Dim cht As ChartObjectVoor elke cht in ActiveSheet.ChartObjectscht.Hoogte = 144.85cht.Breedte = 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)volgende chtEinde sub |
Het resultaat is:
Een kaart op zijn eigen kaartblad invoegen
We hebben het bereik A1:B6 dat de brongegevens bevat, hieronder weergegeven:
U kunt een diagram maken met de methode Charts.Add. De volgende code maakt een grafiek op zijn eigen grafiekblad:
123456 | Sub invoegenAChartOnItsOwnChartSheet()Bladen ("Blad1"). Bereik ("A1:B6"). SelecteerGrafieken.ToevoegenEinde sub |
Het resultaat is:
Bekijk enkele van onze andere zelfstudies over grafieken:
Grafieken in Excel
Maak een staafdiagram in VBA