Recientemente, explicando en una formación de VB, surgió la cuestión de recorrer todos los gráficos de una hoja y modificar ciertas propiedades de estos, con el fin de homogeneizar los gráficos dispuestos...
Evidentemente podríamos ir uno a uno manualmente.. pero ¿y si fueran 70 gráficos?.
Veamos nuestros gráficos de partida, donde comprobamos que cada uno tiene unas dimensiones diferentes, así como (en base a estas dimensiones) las unidades del escalado de las etiquetas del eje vertical (de valores) son distintas en unos y otros.
En el post de hoy daremos una posible solución, donde con una sencilla macro recorreremos todos los gráficos de la hoja activa y personalizaremos:
1-las unidades menor/mayor del autoescalado de las etiquetas del eje vertical
2-tamaño (alto+ancho) del gráfico.
Así pues añadimos la siguiente macro dentro de un módulo estándar de nuestro proyecto de VB:
Tras ejecutar nuestra macro veremos:
Comprobando como el tamaño de cada gráfico es exactamente igual, y como las unidades de la escala del eje vertical es en todos los casos de 1.000... como indicamos en la macro.
Evidentemente podríamos ir uno a uno manualmente.. pero ¿y si fueran 70 gráficos?.
Veamos nuestros gráficos de partida, donde comprobamos que cada uno tiene unas dimensiones diferentes, así como (en base a estas dimensiones) las unidades del escalado de las etiquetas del eje vertical (de valores) son distintas en unos y otros.
En el post de hoy daremos una posible solución, donde con una sencilla macro recorreremos todos los gráficos de la hoja activa y personalizaremos:
1-las unidades menor/mayor del autoescalado de las etiquetas del eje vertical
2-tamaño (alto+ancho) del gráfico.
Así pues añadimos la siguiente macro dentro de un módulo estándar de nuestro proyecto de VB:
Sub RecorrerGraficos() Dim grafico As ChartObject Application.ScreenUpdating = False Application.EnableEvents = False 'y para recorrer todos los gráficos de la hoja... For Each grafico In ActiveSheet.ChartObjects 'activamos el gráfico sobre el que trabajar grafico.Activate With ActiveChart 'modificamos las unidades del autoescalado With .Axes(xlValue) .MinorUnit = 1000 .MajorUnit = 1000 End With 'y lsa dimensiones del gráfico With .ChartArea .Height = 115 .Width = 200 End With End With Next grafico Application.ScreenUpdating = True Application.EnableEvents = True End Sub
Tras ejecutar nuestra macro veremos:
Comprobando como el tamaño de cada gráfico es exactamente igual, y como las unidades de la escala del eje vertical es en todos los casos de 1.000... como indicamos en la macro.
No hay comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.