Una de las áreas en donde las macros tienen mucho que decir, es en la creación y mantenimiento de gráficos. Normalmente, el crecimiento de las columnas, hacen que nuestro gráficos queden desactualizados, en cambio con alguna macro muy simple, podríamos resolver el problema.
Vamos a volver a utilizar la hoja de cálculo con las notas de los alumnos, y ahora vamos a hacer un gráfico de tarta con las notas de todos los alumnos
Antes de hacer el gráfico, hemos puesto el grabador en marcha, por lo que ademas del gráfico, hemos conseguido la macro que lo crea, y que es esta:
Sub CreaGrafico() ' Range("A5:A15,C5:C15").Select Range("C5").Activate ActiveSheet.Shapes.AddChart.Select ActiveChart.SetSourceData Source:=Range( _ "'Hoja1'!$A$5:$A$15;'Hoja1'!$C$5:$C$15") ActiveChart.ChartType = xl3DPie End Sub
Las primeras líneas, las ha generado cuando nosotros estabamos seleccionando los rangos fuentes, para que el asistente nos hiciera todo el trabajo, pero ahora ya nos sobran, realmente las líneas en las que tenemos que poner atención, os las indico aquí
ActiveSheet.Shapes.AddChart xl3DPie ActiveChart.SetSourceData Source:=Range(montaStringFin("'Hoja1'!$A$5"), montaStringFin("'Hoja1'!$C$5"))
También me he creado dos pequeñas funciones para que me seleccione desde una celda, hasta el primer blanco. Realmente, no me selecciona, solo me generan la string, que luego utilizaré con un range.
Function encuentraFin(celda As String) As String encuentraFin = Range(celda).End(xlDown).Address End Function Function montaStringFin(celda As String) As String montaStringFin = celda & ":" & encuentraFin(celda) End Function
No es que sea imprescindible, pero me estaba molestando hacer los cálculos en cada línea, y costaba más de entender.
Ahora nuestro gráfico, crecerá a medida que lo haga nuestra hoja. Eso sí, acordaros de ejecutar la macro
3 comentarios
buen aporte gracias!!!!!!