Excel -diagram och grafer används för att visuellt visa data. I denna handledning kommer vi att täcka hur man använder VBA för att skapa och manipulera diagram och diagramelement.
Du kan skapa inbäddade diagram i ett kalkylblad eller diagram på egna diagramblad.
Skapa ett inbäddat diagram med VBA
Vi har intervallet A1: B4 som innehåller källdata, som visas nedan:
Du kan skapa ett diagram med metoden ChartObjects.Add. Följande kod skapar ett inbäddat diagram i kalkylbladet:
12345678 | Sub CreateEmbeddedChartUsingChartObject ()Dim embeddedchart As ChartObjectStäll in embeddedchart = Sheets ("Sheet1"). ChartObjects.Add (Left: = 180, Width: = 300, Top: = 7, Height: = 200)embeddedchart.Chart.SetSourceData Source: = Sheets ("Sheet1"). Omfång ("A1: B4")Avsluta Sub |
Resultatet är:
Du kan också skapa ett diagram med metoden Shapes.AddChart. Följande kod skapar ett inbäddat diagram i kalkylbladet:
12345678 | Sub CreateEmbeddedChartUsingShapesAddChart ()Dim inbäddat diagram som formStäll in embeddedchart = Sheets ("Sheet1"). Shapes.AddChartembeddedchart.Chart.SetSourceData Source: = Sheets ("Sheet1"). Omfång ("A1: B4")Avsluta Sub |
Ange en diagramtyp med hjälp av VBA
Vi har intervallet A1: B5 som innehåller källdata, som visas nedan:
Du kan ange en diagramtyp med egenskapen ChartType. Följande kod skapar ett cirkeldiagram i kalkylbladet eftersom egenskapen ChartType har ställts in på xlPie:
123456789 | Sub SpecifyAChartType ()Dim chrt As ChartObjectStäll in chrt = Sheets ("Sheet1"). ChartObjects.Add (Left: = 180, Width: = 270, Top: = 7, Height: = 210)chrt.Chart.SetSourceData Source: = Sheets ("Sheet1"). Omfång ("A1: B5")chrt.Chart.ChartType = xlPieAvsluta Sub |
Resultatet är:
Det här är några av de populära diagramtyperna som vanligtvis anges, även om det finns andra:
- xlArea
- xlPie
- xlLine
- xlRadar
- xlXYScatter
- xlSurface
- xlBubble
- xlBarClustered
- xlColumnClustered
Lägga till en diagramtitel med hjälp av VBA
Vi har ett diagram valt i kalkylbladet enligt nedan:
Du måste lägga till en diagramtitel först med metoden Chart.SetElement och sedan ange texten för diagramtiteln genom att ställa in egenskapen ChartTitle.Text.
Följande kod visar hur du lägger till en diagramtitel och anger texten för titeln på det aktiva diagrammet:
123456 | Sub AddingAndSettingAChartTitle ()ActiveChart.SetElement (msoElementChartTitleAboveChart)ActiveChart.ChartTitle.Text = "Försäljningen av produkten"Avsluta Sub |
Resultatet är:
Obs! Du måste först välja diagrammet för att göra det till det aktiva diagrammet för att kunna använda ActiveChart -objektet i din kod.
Ändra kartans bakgrundsfärg med VBA
Vi har ett diagram valt i kalkylbladet enligt nedan:
Du kan ändra bakgrundsfärgen för hela diagrammet genom att ställa in RGB -egenskapen för FillFormat -objektet i ChartArea -objektet. Följande kod ger diagrammet en ljusorange bakgrundsfärg:
12345 | Sub AddingABackgroundColorToTheChartArea ()ActiveChart.ChartArea.Format.Fill.ForeColor.RGB = RGB (253, 242, 227)Avsluta Sub |
Resultatet är:
Du kan också ändra bakgrundsfärgen för hela diagrammet genom att ange egenskapen ColorIndex för objektets interiör i ChartArea -objektet. Följande kod ger diagrammet en orange bakgrundsfärg:
12345 | Sub AddingABackgroundColorToTheChartArea ()ActiveChart.ChartArea.Interior.ColorIndex = 40Avsluta Sub |
Resultatet är:
Obs! Med egenskapen ColorIndex kan du ange en färg baserad på ett värde från 1 till 56, hämtat från den förinställda paletten, för att se vilka värden som representerar de olika färgerna, klicka här.
Ändra färgdiagramområdets område med hjälp av VBA
Vi har ett diagram valt i kalkylbladet enligt nedan:
Du kan ändra bakgrundsfärgen för diagrammets plotyta genom att ställa in RGB -egenskapen för FillFormat -objektet för PlotArea -objektet. Följande kod ger diagramområdet en ljusgrön bakgrundsfärg:
12345 | Sub AddingABackgroundColorToThePlotArea ()ActiveChart.PlotArea.Format.Fill.ForeColor.RGB = RGB (208, 254, 202)Avsluta Sub |
Resultatet är:
Lägga till en förklaring med VBA
Vi har ett diagram valt i kalkylbladet, enligt nedan:
Du kan lägga till en förklaring med hjälp av metoden Chart.SetElement. Följande kod lägger till en förklaring till vänster om diagrammet:
12345 | Sub AddingALegend ()ActiveChart.SetElement (msoElementLegendLeft)Avsluta Sub |
Resultatet är:
Du kan ange legendens position på följande sätt:
- msoElementLegendLeft - visar förklaringen till vänster i diagrammet.
- msoElementLegendLeftOverlay - täcker förklaringen på vänster sida av diagrammet.
- msoElementLegendRight - visar förklaringen på höger sida av diagrammet.
- msoElementLegendRightOverlay - täcker legenden på höger sida av diagrammet.
- msoElementLegendBottom - visar förklaringen längst ner i diagrammet.
- msoElementLegendTop - visar förklaringen högst upp i diagrammet.
Lägga till datatiketter med VBA
Vi har ett diagram valt i kalkylbladet, enligt nedan:
Du kan lägga till datatiketter med metoden Chart.SetElement. Följande kod lägger till datatiketter i diagrammets inre ände:
12345 | Sub AddingADataLabels ()ActiveChart.SetElement msoElementDataLabelInsideEndAvsluta Sub |
Resultatet är:
Du kan ange hur etiketterna ska placeras på följande sätt:
- msoElementDataLabelShow - visa datatiketter.
- msoElementDataLabelRight - visar datatiketter till höger om diagrammet.
- msoElementDataLabelLeft - visar datatiketter till vänster i diagrammet.
- msoElementDataLabelTop - visar datatiketter högst upp i diagrammet.
- msoElementDataLabelBestFit - bestämmer den bästa passformen.
- msoElementDataLabelBottom - visar datatiketter längst ner i diagrammet.
- msoElementDataLabelCallout - visar datatiketter som en information.
- msoElementDataLabelCenter - visar datatiketter på mitten.
- msoElementDataLabelInsideBase - visar datatiketter på insidan.
- msoElementDataLabelOutSideEnd - visar datatiketter på diagrammets utsida.
- msoElementDataLabelInsideEnd - visar datatiketter på diagrammets insida.
Lägga till en X-axel och titel i VBA
Vi har ett diagram valt i kalkylbladet, enligt nedan:
Du kan lägga till en X-axel och X-axel med hjälp av metoden Chart.SetElement. Följande kod lägger till en X-axel och en X-axel i diagrammet:
123456789 | Sub AddingAnXAxisandXTitle ()Med ActiveChart.SetElement msoElementPrimaryCategoryAxisShow.SetElement msoElementPrimaryCategoryAxisTitleHorizontalSluta medAvsluta Sub |
Resultatet är:
Lägga till en Y-axel och titel i VBA
Vi har ett diagram valt i kalkylbladet, enligt nedan:
Du kan lägga till en Y-axel och Y-axeltitel med hjälp av metoden Chart.SetElement. Följande kod lägger till en Y-axel och Y-axeltitel till diagrammet:
1234567 | Sub AddingAYAxisandYTitle ()Med ActiveChart.SetElement msoElementPrimaryValueAxisShow.SetElement msoElementPrimaryValueAxisTitleHorizontalSluta medAvsluta Sub |
Resultatet är:
Ändra nummerformat för en axel
Vi har ett diagram valt i kalkylbladet, enligt nedan:
Du kan ändra nummerformatet för en axel. Följande kod ändrar y-axelns talformat till valuta:
12345 | Sub ChangingTheNumberFormat ()ActiveChart.Axes (xlValue) .TickLabels.NumberFormat = "$#, ## 0.00"Avsluta Sub |
Resultatet är:
Ändra formateringen av teckensnittet i ett diagram
Vi har följande diagram valda i kalkylbladet enligt nedan:
Du kan ändra formateringen av hela diagramteckensnittet genom att hänvisa till teckensnittsobjektet och ändra dess namn, teckensnittsvikt och storlek. Följande kod ändrar typ, vikt och storlek på teckensnittet för hela diagrammet.
12345678910 | Sub ChangingTheFontFormatting ()Med ActiveChart.ChartArea.Format.TextFrame2.TextRange.Font.Name = "Times New Roman".ChartArea.Format.TextFrame2.TextRange.Font.Bold = True.ChartArea.Format.TextFrame2.TextRange.Font.Size = 14Sluta med |
Resultatet är:
Ta bort ett diagram med VBA
Vi har ett diagram valt i kalkylbladet, enligt nedan:
Vi kan använda följande kod för att ta bort det här diagrammet:
12345 | Sub DeletingTheChart ()ActiveChart.Parent.DeleteAvsluta Sub |
Med hänvisning till ChartObjects Collection
Du kan komma åt alla de inbäddade diagrammen i ditt kalkylblad eller din arbetsbok genom att hänvisa till ChartObjects -samlingen. Vi har två diagram på samma blad som visas nedan:
Vi kommer att hänvisa till ChartObjects -samlingen för att ge båda diagrammen i kalkylbladet samma höjd, bredd, radera rutnätlinjerna, göra bakgrundsfärgen densamma, ge diagrammen samma plottområdefärg och göra plottområdets radfärg samma Färg:
12345678910111213141516 | Sub ReferringToAllTheChartsOnASheet ()Dim cht As ChartObjectFör varje cht i ActiveSheet.ChartObjectscht.Höjd = 144,85cht.Bredd = 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)Nästa kapAvsluta Sub |
Resultatet är:
Infoga ett diagram på sitt eget sjökort
Vi har intervallet A1: B6 som innehåller källdata, som visas nedan:
Du kan skapa ett diagram med metoden Charts.Add. Följande kod skapar ett diagram på sitt eget sjökort:
123456 | Sub InsertingAChartOnItsOwnChartSheet ()Ark ("Ark1"). Område ("A1: B6"). VäljDiagram. Lägg tillAvsluta Sub |
Resultatet är:
Se några av våra andra kartstudier:
Diagram i Excel
Skapa ett stapeldiagram i VBA