Вы находитесь на странице: 1из 2

Graficos con mcros

A veces crear un grfico puede convertirse en una tarea tediosa, porque normalmente vamos seleccionando las opciones como el tipo de grfico, el rango de datos, y dems, a travs del asistente de grficos.

Si normalmente utilizamos siempre el mismo tipo de grficos, podemos automatizar la tarea de creacin de un grfico, de forma muy sencilla. Nos bastar con crear el siguiente cdigo:

Sub crear_grafico() 'Ocultamos el procedimiento Application.ScreenUpdating = False 'Pasamos a una variable la celda donde estamos, 'para volver a ella al finalizar el macro celda_donde_estamos = ActiveCell.Address 'Vamos al principio del rango de datos '(celda de arriba a la izquierda). 'Mejor usar esto, que CurrentRegion: If ActiveCell.Row <> 1 Then If ActiveCell.Offset(-1, 0) <> "" Then Selection.End(xlUp).Select End If End If If ActiveCell.Column <> 1 Then If ActiveCell.Offset(0, -1) <> "" Then Selection.End(xlToLeft).Select End If End If 'Pasamos la celda inicial (donde estamos ahora) celda_inicial = ActiveCell.Address 'si la celda est vaca, no creamos el grfico If celda_inicial = "" Or IsEmpty(ActiveCell) Then mensaje = MsgBox("No hay datos para crear el grfico. ", vbInformation, "Imposible crear grfico") Exit Sub End If 'Pasamos a una variable, el nombre de la hoja nombre_de_la_hoja = ActiveSheet.Name 'Pasamos a una variable, el rea de datos para el grfico area_de_datos = Range(celda_inicial).CurrentRegion.SpecialCells(xlVisible).Address 'Creamos el grfico Charts.Add 'Informamos del tipo de grfico que deseamos

ActiveChart.ChartType = xlColumnClustered 'Seleccionamos el rea de datos para montar el grfico ActiveChart.SetSourceData Source:=Sheets(nombre_de_la_hoja).Range(area_de_datos), PlotBy:=xlColumns 'Creamos el grfico en la hoja donde estamos ActiveChart.Location Where:=xlLocationAsObject, Name:=nombre_de_la_hoja 'Cambiamos el ttulo del grfico With ActiveChart .HasTitle = True .Axes(xlCategory, xlPrimary).HasTitle = False .Axes(xlValue, xlPrimary).HasTitle = False End With 'Quitamos la leyenda ActiveChart.HasLegend = False 'Ponemos tamao 8 para el eje Y ActiveChart.Axes(xlValue).Select Selection.TickLabels.AutoScaleFont = True With Selection.TickLabels.Font .Size = 8 End With 'Ponemos tamao 8 para el eje X ActiveChart.Axes(xlCategory).Select Selection.TickLabels.AutoScaleFont = True With Selection.TickLabels.Font .Size = 8 End With 'Ponemos el ttulo en negrita ActiveChart.ChartTitle.Select Selection.Font.Bold = True 'Volvemos a la celda donde estbamos inicialmente Range(celda_donde_estamos).Select 'Mostramos el procedimiento Application.ScreenUpdating = True End Sub

En ese ejemplo que os dejo, se nos crear un grfico de barras, en el que ajustaremos el tamao de la fuente a 8, como cosas ms importantes. Para que funcione el macro, y nos cree el grfico, tan solo deberemos situarnos en una celda del rango que contenga datos. Da igual la celda donde nos situemos, tan solo deberemos posicionarnos encima de una de las celdas. De esa forma, y ejecutando el macro, tendremos nuestro grfico creado en un plis plas.

Вам также может понравиться