VBA Guía para Gráficos y Diagramas
In this Article
- Creación de un gráfico incrustado con VBA
- Especificación de un tipo de gráfico mediante VBA
- Añadir un título de gráfico usando VBA
- Cambiar el color de fondo del gráfico con VBA
- Cambiar el color del área de ploteo del gráfico utilizando VBA
- Añadiendo una leyenda usando VBA
- Añadir etiquetas de datos utilizando VBA
- Añadir un eje X y un título en VBA
- Añadir un eje Y y un título en VBA
- Cambiando el Formato de Número de un Eje
- Cambiar el formato de la fuente en un gráfico
- Eliminación de un gráfico mediante VBA
- Referirse a la colección ChartObjects
- Inserción de un gráfico en su propia hoja de gráficos
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:
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:
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:
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:
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:
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:
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:
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:
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:
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:
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:
Añadiendo una leyenda usando VBA
Tenemos un gráfico seleccionado en la hoja de trabajo, como se muestra a continuación:
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:
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:
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:
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:
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 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:
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:
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:
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 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:
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:
Eliminación de un gráfico mediante VBA
Tenemos un gráfico seleccionado en la hoja de trabajo, como se muestra a continuación:
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:
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:
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:
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:
Vea algunos de nuestros otros tutoriales de gráficos: Gráficos en Excel Crear un gráfico de barras en VBA