Los cuadros y gráficos de Excel se utilizan para mostrar datos visualmente. En este tutorial, cubriremos cómo usar VBA para crear y manipular gráficos y elementos de gráficos.
Puede crear gráficos incrustados en una hoja de trabajo o gráficos en sus propias hojas de gráficos.
Creando un gráfico incrustado usando VBA
Tenemos el rango A1: B4 que contiene los datos de origen, que se muestran a continuación:
Puede crear un gráfico con el método ChartObjects.Add. El siguiente código creará un gráfico incrustado en la hoja de trabajo:
12345678 | Sub CreateEmbeddedChartUsingChartObject ()Atenuar el gráfico incrustado como ChartObjectEstablecer embeddedchart = Sheets ("Sheet1"). ChartObjects.Add (Izquierda: = 180, Ancho: = 300, Arriba: = 7, Alto: = 200)embeddedchart.Chart.SetSourceData Source: = Sheets ("Sheet1"). Range ("A1: B4")End Sub |
El resultado es:
También puede crear un gráfico con el método Shapes.AddChart. El siguiente código creará un gráfico incrustado en la hoja de trabajo:
12345678 | Sub CreateEmbeddedChartUsingShapesAddChart ()Atenuar gráfico incrustado como formaEstablecer embeddedchart = Sheets ("Sheet1"). Shapes.AddChartembeddedchart.Chart.SetSourceData Source: = Sheets ("Sheet1"). Range ("A1: B4")End Sub |
Especificar un tipo de gráfico mediante VBA
Tenemos el rango A1: B5 que contiene los datos de origen, que se muestran a continuación:
Puede especificar un tipo de gráfico mediante la propiedad ChartType. El siguiente código creará un gráfico circular en la hoja de trabajo, ya que la propiedad ChartType se ha establecido en xlPie:
123456789 | Sub SpecifyAChartType ()Dim chrt como ChartObjectEstablecer chrt = Sheets ("Sheet1"). ChartObjects.Add (Izquierda: = 180, Ancho: = 270, Arriba: = 7, Alto: = 210)chrt.Chart.SetSourceData Source: = Sheets ("Sheet1"). Range ("A1: B5")chrt.Chart.ChartType = xlPieEnd Sub |
El resultado es:
Estos son algunos de los tipos de gráficos más populares que generalmente se especifican, aunque hay otros:
- xlArea
- xlPie
- xlLine
- xlRadar
- xlXYScatter
- xlSurface
- xlBubble
- xlBarClustered
- xlColumnClustered
Agregar un título de gráfico usando VBA
Tenemos un gráfico seleccionado en la hoja de trabajo como se muestra a continuación:
Primero debe agregar un título de gráfico utilizando el método Chart.SetElement y luego especificar el texto del título del gráfico estableciendo la propiedad ChartTitle.Text.
El siguiente código muestra cómo agregar un título de gráfico y especificar el texto del título del gráfico activo:
123456 | Sub AddingAndSettingAChartTitle ()ActiveChart.SetElement (msoElementChartTitleAboveChart)ActiveChart.ChartTitle.Text = "Las ventas del producto"End Sub |
El resultado es:
Nota: Primero debe seleccionar el gráfico para convertirlo en el gráfico activo para poder usar el objeto ActiveChart en su código.
Cambiar el color de fondo del gráfico con VBA
Tenemos un gráfico seleccionado en la hoja de trabajo como se muestra a continuación:
Puede cambiar el color de fondo de todo el gráfico estableciendo la propiedad RGB del objeto FillFormat del objeto ChartArea. El siguiente código le dará al gráfico un color de fondo naranja claro:
12345 | Sub AddingABackgroundColorToTheChartArea ()ActiveChart.ChartArea.Format.Fill.ForeColor.RGB = RGB (253, 242, 227)End Sub |
El resultado es:
También puede cambiar el color de fondo de todo el gráfico estableciendo la propiedad ColorIndex del objeto Interior del objeto ChartArea. El siguiente código le dará al gráfico un color de fondo naranja:
12345 | Sub AddingABackgroundColorToTheChartArea ()ActiveChart.ChartArea.Interior.ColorIndex = 40End Sub |
El resultado es:
Nota: La propiedad ColorIndex le permite especificar un color basado en un valor de 1 a 56, extraído de la paleta preestablecida, para ver qué valores representan los diferentes colores, haga clic aquí.
Cambiar el color del área de la gráfica del gráfico usando VBA
Tenemos un gráfico seleccionado en la hoja de trabajo como se muestra a continuación:
Puede cambiar el color de fondo solo del área de trazado del gráfico, estableciendo la propiedad RGB del objeto FillFormat del objeto PlotArea. El siguiente código le dará al área de trazado del gráfico un color de fondo verde claro:
12345 | Sub AddingABackgroundColorToThePlotArea ()ActiveChart.PlotArea.Format.Fill.ForeColor.RGB = RGB (208, 254, 202)End Sub |
El resultado es:
Agregar una leyenda usando VBA
Tenemos un gráfico seleccionado en la hoja de trabajo, como se muestra a continuación:
Puede agregar una leyenda mediante el método Chart.SetElement. El siguiente código agrega una leyenda a la izquierda del gráfico:
12345 | Sub AddingALegend ()ActiveChart.SetElement (msoElementLegendLeft)End Sub |
El resultado es:
Puede especificar la posición de la leyenda de las siguientes formas:
- msoElementLegendLeft: muestra la leyenda en el lado izquierdo del gráfico.
- msoElementLegendLeftOverlay: superpone la leyenda en el lado izquierdo del gráfico.
- msoElementLegendRight: muestra la leyenda en el lado derecho del gráfico.
- msoElementLegendRightOverlay: superpone la leyenda en el lado derecho del gráfico.
- msoElementLegendBottom: muestra la leyenda en la parte inferior del gráfico.
- msoElementLegendTop: muestra la leyenda en la parte superior del gráfico.
Agregar etiquetas de datos usando VBA
Tenemos un gráfico seleccionado en la hoja de trabajo, como se muestra a continuación:
Puede agregar etiquetas de datos mediante el método Chart.SetElement. El siguiente código agrega etiquetas de datos al extremo interior del gráfico:
12345 | Sub AddingADataLabels ()ActiveChart.SetElement msoElementDataLabelInsideEndEnd Sub |
El resultado es:
Puede especificar cómo se colocan las etiquetas de datos de las siguientes formas:
- msoElementDataLabelShow: muestra las etiquetas de datos.
- msoElementDataLabelRight: muestra etiquetas de datos a la derecha del gráfico.
- msoElementDataLabelLeft: muestra etiquetas de datos a la izquierda del gráfico.
- msoElementDataLabelTop: muestra etiquetas de datos en la parte superior del gráfico.
- msoElementDataLabelBestFit: determina el mejor ajuste.
- msoElementDataLabelBottom: muestra etiquetas de datos en la parte inferior del gráfico.
- msoElementDataLabelCallout: muestra etiquetas de datos como una llamada.
- msoElementDataLabelCenter: muestra etiquetas de datos en el centro.
- msoElementDataLabelInsideBase: muestra etiquetas de datos en la base interior.
- msoElementDataLabelOutSideEnd: muestra etiquetas de datos en el extremo exterior del gráfico.
- msoElementDataLabelInsideEnd: muestra etiquetas de datos en el extremo interior del gráfico.
Agregar un eje X y un título en VBA
Tenemos un gráfico seleccionado en la hoja de trabajo, como se muestra a continuación:
Puede agregar un título de eje X y eje X utilizando el método Chart.SetElement. El siguiente código agrega un título de eje X y eje X al gráfico:
123456789 | Sub AddingAnXAxisandXTitle ()Con ActiveChart.SetElement msoElementPrimaryCategoryAxisShow.SetElement msoElementPrimaryCategoryAxisTitleHorizontalTerminar conEnd Sub |
El resultado es:
Agregar un eje Y y un título en VBA
Tenemos un gráfico seleccionado en la hoja de trabajo, como se muestra a continuación:
Puede agregar un título de eje Y y eje Y utilizando el método Chart.SetElement. El siguiente código agrega un título de eje Y y eje Y al gráfico:
1234567 | Sub AddingAYAxisandYTitle ()Con ActiveChart.SetElement msoElementPrimaryValueAxisShow.SetElement msoElementPrimaryValueAxisTitleHorizontalTerminar conEnd Sub |
El resultado es:
Cambio del formato numérico de un eje
Tenemos un gráfico seleccionado en la hoja de trabajo, como se muestra a continuación:
Puede cambiar el formato numérico de un eje. El siguiente código cambia el formato numérico del eje y a moneda:
12345 | Sub ChangingTheNumberFormat ()ActiveChart.Axes (xlValue) .TickLabels.NumberFormat = "$ #, ## 0.00"End Sub |
El resultado es:
Cambiar el formato de la fuente en un gráfico
Tenemos la siguiente tabla seleccionada en la hoja de trabajo como se muestra a continuación:
Puede cambiar el formato de toda la fuente del gráfico, consultando el objeto de fuente y cambiando su nombre, peso de fuente y tamaño. El siguiente código cambia el tipo, peso y tamaño de la fuente de todo el gráfico.
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 = 14Terminar con |
El resultado es:
Eliminar un gráfico con VBA
Tenemos un gráfico seleccionado en la hoja de trabajo, como se muestra a continuación:
Podemos usar el siguiente código para eliminar este gráfico:
12345 | Sub DeletingTheChart ()ActiveChart.Parent.DeleteEnd Sub |
Refiriéndose a la colección ChartObjects
Puede acceder a todos los gráficos incrustados en su hoja de trabajo o libro de trabajo consultando la colección ChartObjects. Tenemos dos gráficos en la misma hoja que se muestran a continuación:
Nos referiremos a la colección ChartObjects para dar a ambos gráficos en la hoja de trabajo la misma altura y ancho, eliminar las líneas de cuadrícula, hacer que el color de fondo sea el mismo, dar a los gráficos el mismo color del área de trazado y hacer que el color de la línea del área de trazado sea el mismo color:
12345678910111213141516 | Sub ReferringToAllTheChartsOnASheet ()Dim cht como ChartObjectPara cada cht en ActiveSheet.ChartObjectscht.Height = 144,85cht.Width = 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)Siguiente chtEnd Sub |
El resultado es:
Insertar un gráfico en su propia hoja de gráfico
Tenemos el rango A1: B6 que contiene los datos de origen, que se muestran a continuación:
Puede crear un gráfico utilizando el método Charts.Add. El siguiente código creará un gráfico en su propia hoja de gráfico:
123456 | Sub InsertingAChartOnItsOwnChartSheet ()Hojas ("Hoja1"). Rango ("A1: B6"). SeleccioneGráficos.AñadirEnd Sub |
El resultado es:
Vea algunos de nuestros otros tutoriales de gráficos:
Gráficos en Excel
Crear un gráfico de barras en VBA