VBA Guía para Gráficos y Diagramas

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

Dennis Madrid

Last updated on febrero 28, 2022

Los cuadros y gráficos de Excel se utilizan para mostrar visualmente los datos. En este tutorial, vamos a cubrir cómo utilizar VBA para crear y manipular gráficos y elementos de gráficos

Puedes crear gráficos incrustados en una hoja de trabajo o gráficos en sus propias hojas de gráficos.

Creación de un gráfico incrustado con VBA

Tenemos el rango A1:B4 que contiene los datos de origen, mostrados a continuación:

Tabla De Ventas

 

Se puede crear un gráfico utilizando el método ChartObjects.Add. El siguiente código creará un gráfico incrustado en la hoja de trabajo:

Sub CrearGraficoIncustradoUsandoTablaDeDatos()
 
    Dim graficoObjeto As ChartObject 'Declaración de la variable Objeto de tipo ChartObject
     
    Set graficoObjeto = Sheets("Hoja1").ChartObjects.Add(Left:=180, Width:=300, Top:=7, Height:=200)
    graficoObjeto.Chart.SetSourceData Source:=Sheets("Hoja1").Range("A1:B4")
 
End Sub

El resultado es:

Grafico De Ventas

También puedes crear un gráfico utilizando el método Shapes.AddChart. El siguiente código creará un gráfico incrustado en la hoja de cálculo:

Sub CreateEmbeddedChartUsingShapesAddChart()

Dim embeddedchart As Shape

Set embeddedchart = Sheets("Sheet1").Shapes.AddChart
embeddedchart.Chart.SetSourceData Source:=Sheets("Sheet1").Range("A1:B4")

End Sub

Especificación de un tipo de gráfico mediante VBA

Tenemos el rango A1:B5 que contiene los datos de origen, mostrados a continuación:

The Source range for Creating a Pie Chart Using VBA

Puede especificar un tipo de gráfico utilizando la propiedad ChartType. El siguiente código creará un gráfico circular en la hoja de trabajo ya que la propiedad ChartType ha sido establecida como xlPie:

Sub TipoDeGraficoEspecifico()
    Dim objGrafico As ChartObject
     
    Set objGrafico = Sheets("Hoja1").ChartObjects.Add(Left:=180, Width:=270, Top:=7, Height:=210)
    objGrafico.Chart.SetSourceData Source:=Sheets("Hoja1").Range("A1:B5")
    objGrafico.Chart.ChartType = xlPie
End Sub

El resultado es:

Grafico De Torta

Estos son algunos de los tipos de gráficos populares que se suelen especificar, aunque hay otros:

  • xlArea
  • xlPie
  • xlLínea
  • xlRadar
  • xlXYScatter
  • xlSuperficie
  • xlBubble
  • xlBarClustered
  • xlColumnClustered

Añadir un título de gráfico usando VBA

Tenemos un gráfico seleccionado en la hoja de trabajo como se muestra a continuación:

The Active Chart

Primero hay que añadir 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 añadir un título de gráfico y especificar el texto del título del Gráfico Activo:

Sub AgregarYConfigurarTitulo()
 
    ActiveChart.SetElement (msoElementChartTitleAboveChart)
    ActiveChart.ChartTitle.Text = "Ventas por Producto"
    
End Sub

El resultado es:

Agregar Y Configurar Titulo

Nota: Primero debe seleccionar el gráfico para convertirlo en el Gráfico Activo para poder utilizar 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:

Grafico De Torta

 

Se 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 dará al gráfico un color de fondo naranja claro:

Sub AgregarColorDeFondoaGrafico()
 
    ActiveChart.ChartArea.Format.Fill.ForeColor.RGB = RGB(253, 242, 227)
 
End Sub

El resultado es:

Agregar Color De Fondo a Grafico

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 dará al gráfico un color de fondo naranja:

Sub AgrgarColorDeFondoGrafico()

    ActiveChart.ChartArea.Interior.ColorIndex = 40

End Sub

El resultado es:

Agrgar Color De Fondo Grafico

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 ploteo del gráfico utilizando VBA

Tenemos un gráfico seleccionado en la hoja de trabajo como se muestra a continuación:

Grafico De Barras Verticales

Se puede cambiar el color de fondo sólo del área de trazado del gráfico, estableciendo la propiedad RGB del objeto FillFormat del objeto PlotArea. El siguiente código dará un color de fondo verde claro al área de trazado del gráfico:

Sub AgregarColorDeFondoAreadePloteo()

    ActiveChart.PlotArea.Format.Fill.ForeColor.RGB = RGB(208, 254, 202)
    
End Sub

El resultado es:

AgregarColor De Fondo Area de Ploteo

 

Añadiendo una leyenda usando VBA

Tenemos un gráfico seleccionado en la hoja de trabajo, como se muestra a continuación:

Grafico De Torta Sin Leyenda

Se puede añadir una leyenda utilizando el método Chart.SetElement. El siguiente código añade una leyenda a la izquierda del gráfico:

Sub AñadirLeyenda()

    ActiveChart.SetElement (msoElementLegendLeft)

End Sub

El resultado es:

Añadir Leyenda

Puedes especificar la posición de la leyenda de las siguientes maneras:

  • 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 – muestra 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.

Añadir etiquetas de datos utilizando VBA

Tenemos un gráfico seleccionado en la hoja de trabajo, como se muestra a continuación:

Grafico De Torta Sin Leyenda

Se pueden añadir etiquetas de datos utilizando el método Chart.SetElement. El siguiente código añade etiquetas de datos al extremo interior del gráfico:

Sub AñadirEtiquetasDeDatos()

    ActiveChart.SetElement msoElementDataLabelInsideEnd

End Sub

El resultado es:

Añadir Etiquetas De Datos

Puede especificar cómo se colocan las etiquetas de datos de las siguientes maneras:

  • msoElementDataLabelShow – muestra las etiquetas de datos.
  • msoElementDataLabelRight – muestra las etiquetas de datos a la derecha del gráfico.
  • msoElementDataLabelLeft – muestra las etiquetas de datos a la izquierda del gráfico.
  • msoElementDataLabelTop – muestra las etiquetas de datos en la parte superior del gráfico.
  • msoElementDataLabelBestFit – determina el mejor ajuste.
  • msoElementDataLabelBottom – muestra las etiquetas de datos en la parte inferior del gráfico.
  • msoElementDataLabelCallout – muestra las etiquetas de datos como una llamada.
  • msoElementDataLabelCenter – muestra las etiquetas de datos en el centro.
  • msoElementDataLabelInsideBase – muestra las etiquetas de datos en la base interior.
  • msoElementDataLabelOutSideEnd – muestra las etiquetas de datos en el extremo exterior del gráfico.
  • msoElementDataLabelInsideEnd – muestra las etiquetas de datos en el extremo interior del gráfico.

Añadir 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:

Ventas Por Region

Se puede añadir un eje X y un título del eje X utilizando el método Chart.SetElement. El siguiente código añade un eje X y un título del eje X al gráfico:

Sub AñadirTituloalEjeXY()
    With ActiveChart
        .SetElement msoElementPrimaryCategoryAxisShow
        .SetElement msoElementPrimaryCategoryAxisTitleHorizontal
    End With
End Sub

El resultado es:

Añadir Titulo al Eje XY

 

Añadir 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:

Grafico Barras Sin Eje Y

Se puede añadir un eje Y y un título del eje Y utilizando el método Chart.SetElement. El siguiente código añade un eje Y y un título del eje Y al gráfico:

Sub AñadirTituloEjeY()
 
    With ActiveChart
        .SetElement msoElementPrimaryValueAxisShow
        .SetElement msoElementPrimaryValueAxisTitleHorizontal
    End With
End Sub

El resultado es:

Añadir Titulo Eje Y

 

Cambiando el Formato de Número de un Eje

Tenemos un gráfico seleccionado en la hoja de trabajo, como se muestra a continuación:

Grafico Barras Ejes XY

 

Se puede cambiar el formato numérico de un eje. El siguiente código cambia el formato numérico del eje Y a moneda:

Sub CambiandoElFormatoDeNumeros()

    ActiveChart.Axes(xlValue).TickLabels.NumberFormat = "$#,##0.00"

End Sub

El resultado es:

Cambiar Formato De Numeros Eje

Cambiar el formato de la fuente en un gráfico

Tenemos el siguiente gráfico seleccionado en la hoja de trabajo como se muestra a continuación:

Grafico Barras Ejes XY

Se puede cambiar el formato de la fuente de todo el gráfico, haciendo referencia al objeto fuente y cambiando su nombre, peso de la fuente y tamaño. El siguiente código cambia el tipo, peso y tamaño de la fuente de todo el gráfico.

Sub CambiandoLaFuente()
    With ActiveChart
        .ChartArea.Format.TextFrame2.TextRange.Font.Name = "Times New Roman"
        .ChartArea.Format.TextFrame2.TextRange.Font.Bold = True
        .ChartArea.Format.TextFrame2.TextRange.Font.Size = 14
    End With
End Sub

El resultado es:

Cambiando La Fuente

Eliminación de un gráfico mediante VBA

Tenemos un gráfico seleccionado en la hoja de trabajo, como se muestra a continuación:

Grafico Barras Ejes XY

Podemos utilizar el siguiente código para eliminar este gráfico:

Sub BorrandoElGrafico()
 
    ActiveChart.Parent.Delete
 
End Sub

Referirse a la colección ChartObjects

Puede acceder a todos los gráficos incrustados en su hoja o libro de trabajo haciendo referencia a la colección ChartObjects. Tenemos dos gráficos en la misma hoja que se muestra a continuación:

Dos Graficos Barras

Haremos referencia a la colección ChartObjects para dar a ambos gráficos en la hoja de trabajo la misma altura, anchura, eliminar las líneas de la cuadrícula, hacer que el color de fondo sea el mismo, dar a los gráficos el mismo color de área de trazado y hacer que el color de la línea de área de trazado sea el mismo:

Sub ReferirseaTodosLosGraficosenUnaHoja()
 
    Dim grafico As ChartObject
     
    For Each grafico In ActiveSheet.ChartObjects
        grafico.Height = 144.85
        grafico.Width = 246.61
         
        grafico.Chart.Axes(xlValue).MajorGridlines.Delete
        grafico.Chart.PlotArea.Format.Fill.ForeColor.RGB = RGB(242, 242, 242)
        grafico.Chart.ChartArea.Format.Fill.ForeColor.RGB = RGB(234, 234, 234)
        grafico.Chart.PlotArea.Format.Line.ForeColor.RGB = RGB(18, 97, 172)
    Next grafico
 
End Sub

El resultado es:

Modificar Graficos en Una Hoja

Inserción de un gráfico en su propia hoja de gráficos

Tenemos el rango A1:B6 que contiene los datos de origen, mostrados a continuación:

Tabla Ventas Por Region

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áficos:

Sub InsertarGraficoEnPropiaHoja()
 
    Sheets("Hoja1").Range("A1:B6").Select
    Charts.Add
 
End Sub

El resultado es:

Insertar Grafico en Su Propia Hoja

Vea algunos de nuestros otros tutoriales de gráficos: Gráficos en Excel Crear un gráfico de barras en VBA

vba-free-addin

Complemento de Ejemplos de Código de VBA

Acceda fácilmente a todos los ejemplos de código que se encuentran en nuestro sitio.

Simplemente navegue al menú, haga clic y el código se insertará directamente en su módulo. Complemento .xlam.

(¡No se requiere instalación!)

Descarga gratuita

Return to VBA Code Examples