Guía de VBA para tablas y gráficos

Tabla de contenido

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

wave wave wave wave wave