Gráficos
Objetivos
En este capítulo, primero revisaremos cómo crear un gráfico a partir de un rango de celdas utilizando la cinta de opciones de Excel.
Existen miles de combinaciones de gráficos posibles; ¡incluso hay un campeonato mundial de Excel que se lleva a cabo sobre la creación gráfica!
Sin pretender convertirlo en un campeón mundial de gráficos de Excel, en este capítulo verá los objetos asociados a la creación de gráficos utilizados en VBA y cómo usar la grabadora de macros para que VBA escriba código por usted. Por último, una serie de ejercicios le ayudarán a asegurarse de que estos nuevos conocimientos han sido adquiridos correctamente.
Gráficos en Excel
Como dice el refrán, «una imagen vale más que mil palabras»: las representaciones gráficas tienen una importancia no despreciable a la hora de mostrar datos. Los gráficos han experimentado una importante evolución, y Excel permite crear muchos tipos diferentes de gráficos en función del tipo de datos por representar y del mensaje que se quiera transmitir.
En Excel, los gráficos se pueden crear desde la pestaña Insertar y están visibles en el grupo Gráficos:
![images/cap18_img_01.png](https://www.eni-training.com/download/8085119a-0c84-4016-9951-8b65c868e345/images/cap18_img_01.png?id=AAEAAAD%2f%2f%2f%2f%2fAQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwdGVzdCB2Ml84IC0gZmZhNjQzOWQtZDZjYi00NzYxLWJhYTMtZWZkZDNiZDcwMWM25rSq0F7p2IgL)
Cuando se tiene un conjunto de datos por representar en forma gráfica, se puede elegir el tipo de gráfico. Una vez creado el gráfico, puede personalizarlo cambiando, por ejemplo, los colores o las formas de los puntos, las curvas, etc., que son visibles
Jerarquía de los objetos Shape, ChartObject y Chart
Al trabajar con gráficos, Excel considera en realidad varios niveles de objetos, cada uno de los cuales representa una parte de lo que el usuario podrá ver o manipular.
Sin entrar en detalles técnicos, he aquí una imagen con los diferentes objetos que componen un gráfico:
![images/cap18_img_02.png](https://www.eni-training.com/download/8085119a-0c84-4016-9951-8b65c868e345/images/cap18_img_02.png?id=AAEAAAD%2f%2f%2f%2f%2fAQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwdGVzdCB2Ml84IC0gZmZhNjQzOWQtZDZjYi00NzYxLWJhYTMtZWZkZDNiZDcwMWM25rSq0F7p2IgL)
El marco del conjunto A (ChartObject) es el «contenedor» en el que se encuentran el área de trazado del gráfico B (PlotArea), el título del gráfico C (ChartTitle) y su leyenda D (Legend).
Dependiendo del tipo de gráfico, otros elementos, como los puntos de las curvas o los ejes también se representan mediante objetos que pueden manipularse en VBA.
Capa de diseño: Shape
Ya sea que se utilice una forma automática, un gráfico o una imagen, el primer nivel en el que Excel trabaja es un objeto Shape. Cada objeto Shape pertenece a la colección Shapes, que se encuentra en cada hoja de su libro.
Usted puede crear un gráfico a partir de la colección Shapes.
Hoja del gráfico: ChartObject
Cuando se crea un gráfico, este se encuentra en un contenedor que se puede volver a presentar visualmente, como el marco blanco en el que figuran el gráfico, el título y la leyenda. El conjunto de objetos ChartObject se encuentra en la colección ChartObjects.
ChartObject es el objeto Parent del gráfico...
Gráfico: Chart
En esta sección aprenderá más sobre el objeto Chart, que representa un gráfico de cualquier complejidad y que se manipula fácilmente con VBA.
Colección Charts
Al igual que todas las hojas pertenecen a la colección Worksheets, o los libros pertenecen a la colección Workbooks, los gráficos pertenecen a la colección Charts. A partir de esta colección puede crear gráficos o añadir otros. Se puede conocer el número de gráficos a partir de la propiedad Count.
Objeto Chart
En VBA, un gráfico está representado por un objeto Chart. Este tipo de datos tiene muchas propiedades y métodos propios. Las sutilezas de los gráficos no son el tema de este libro, pero descubrirá los principales métodos y propiedades que le permitirán personalizar sus gráficos.
Crear un gráfico
Tal y como sucede con los otros tipos de objetos, lo primero que hay que hacer antes de poder utilizar una variable es declararla.
Dim cht As Chart
Ejemplo 1: declarar una variable de tipo Chart
Para agregar un gráfico al libro, debe usar el método Add de la colección Charts.
Dim cht As Chart
Set cht = Charts.Add
Ejemplo 2: agregar un gráfico
Existe otra forma de crear un gráfico, que se verá más adelante en este capítulo.
Definir un rango de datos de origen: SetSourceData
Una vez creado el gráfico, puede especificar el rango de celdas que servirán como origen. Esta asociación se realiza mediante el método SetSourceData. Este método utiliza dos parámetros; la sintaxis general es la siguiente:
Chart.SetSourceData(Source,[PlotBy])
Ejemplo 3: sintaxis general del método SetSourceData
El primer parámetro Source es el rango de celdas utilizadas, es decir, un objeto Range; el segundo parámetro se utiliza para especificar si los datos deben manipularse en filas...
Usar la grabadora de macros para crear un gráfico
Dada la gran variedad de opciones disponibles a la hora de crear o actualizar un gráfico, se recomienda comenzar utilizando la grabadora de macros para, a continuación, analizar las distintas líneas de código adaptando las instrucciones a su programa según sus necesidades.
Si retomamos el caso de la creación del gráfico basado en los datos de la hoja Ejercicios_ManipulacionFormulas, buscando un gráfico circular, esto es lo que generó la grabadora de macros. Las líneas se comentan para facilitar su comprensión.
Sub CreacionGrafico()
Sheets("Ejercicios_ManipulacionFormulas").Activate
Range("A1:B6").Select 'seleccionar el rango de celdas
ActiveSheet.Shapes.AddChart2(251, xlPie).Select 'crear
gráfico y activarlo
ActiveChart.SetSourceData Source:=Range("Ejercicios_ManipulacionFormulas!
$A$1:$B$6") 'establecer el rango de celdas de origen
ActiveChart.ChartTitle.Text = "Cantidad por categoría"
'actualizar el título del gráfico
End Sub
Ejemplo 13: usar la grabadora de macros para generar un gráfico
Ejercicios
Para estos ejercicios, cree una nueva hoja llamada Ejercicios_ManipulacionGraficos. En esta hoja, introduzca los datos en los rangos de celdas A1:B5 y D1:E5, como se muestra en la siguiente captura de pantalla:
![images/18OSTHS01.png](https://www.eni-training.com/download/8085119a-0c84-4016-9951-8b65c868e345/images/18OSTHS01.png?id=AAEAAAD%2f%2f%2f%2f%2fAQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwdGVzdCB2Ml84IC0gZmZhNjQzOWQtZDZjYi00NzYxLWJhYTMtZWZkZDNiZDcwMWM25rSq0F7p2IgL)
Los siguientes ejercicios le permitirán comprender mejor la creación y manipulación de gráficos en su proyecto VBA. Si lo desea, puede utilizar la grabadora de macros para inspirarse en el código generado automáticamente. Aunque las soluciones visuales son solo indicativas, le permitirán ajustar su código si es necesario. El código que genera un gráfico se realiza por defecto en la hoja activa, por lo que se recomienda activar la hoja Ejercicios_ManipulacionGraficos para que la generación no tenga impacto en las demás hojas del libro.
Si lo desea, puede crear un módulo específico para estos ejercicios.
Crear gráficos sencillos
Ventas mensuales
Cree la macro GraficoVentas.
Esta macro debe crear un nuevo gráfico, de tipo Líneas, basado en los datos del rango de celdas A1:B5. El gráfico debe representar la evolución del volumen de ventas durante el periodo comprendido entre enero de 2024 y abril de 2024.
El título del gráfico será Volumen de ventas mensuales y no contendrá ninguna leyenda.
Ejecute la macro GraficoVentas. El gráfico tendrá el siguiente aspecto:
![images/18OSTHS02.png](https://www.eni-training.com/download/8085119a-0c84-4016-9951-8b65c868e345/images/18OSTHS02.png?id=AAEAAAD%2f%2f%2f%2f%2fAQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwdGVzdCB2Ml84IC0gZmZhNjQzOWQtZDZjYi00NzYxLWJhYTMtZWZkZDNiZDcwMWM25rSq0F7p2IgL)