Saltar al contenido

ordenar graficas creadas con macro en la hoja


ebetapia

Recommended Posts

publicado

hola me gustaria saber cual es la parte del codigo donde pones que se ordenen las graficas una debajo de la otra por codigo osea cual es codigo, yo tengo el sig. codigo que grafica me grafica una sobre otra. anexo el codigo aunque esta muy personalizada a cierto formato que tengo pero solo me falta eso que te explico arriba. gracias de antemano

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á vacía, no creamos el gráfico
If celda_inicial = “” Or IsEmpty(ActiveCell) Then
mensaje = MsgBox(“No hay datos para crear el gráfico. “, vbInformation, “Imposible crear gráfico”)
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 gráfico
area_de_datos = Range(celda_inicial).CurrentRegion.SpecialCells(xlVisible).Address
‘Creamos el gráfico
Charts.Add
‘Informamos del tipo de gráfico que deseamos
ActiveChart.ChartType = xlLineStacked
‘Seleccionamos el área de datos para montar el gráfico
ActiveChart.SetSourceData Source:=Sheets(nombre_de_la_hoja).Range(area_de_datos), PlotBy:=xlColumns
‘Creamos el gráfico en la hoja donde estamos
ActiveChart.Location Where:=xlLocationAsObject, Name:=nombre_de_la_hoja
‘Cambiamos el título del gráfico
With ActiveChart
.HasTitle = True
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).HasTitle = True
End With
With ActiveChart
.SeriesCollection(1).Select
Selection.Delete
.SeriesCollection(1).Select
Selection.Delete
.SeriesCollection(3).Select
Selection.Delete
.SeriesCollection(5).Select
Selection.Delete
.SeriesCollection(5).Select
Selection.Delete
.SeriesCollection(5).Select
Selection.Delete
.SeriesCollection(5).Select
Selection.Delete
End With
ActiveChart.ChartType = xlXYScatterLinesNoMarkers
‘Quitamos la leyenda
ActiveChart.SeriesCollection(2).Select
ActiveChart.SeriesCollection(2).AxisGroup = 2
With ActiveChart
.Axes(xlValue).MinimumScale = 0
.Axes(xlValue).MinimumScale = 1.2
.Axes(xlValue).MaximumScale = 3
.Axes(xlValue).MaximumScale = 3
.Axes(xlValue).MajorUnit = 0.5
.Axes(xlValue).MajorUnit = 0.2
End With
With ActiveChart
.Axes(xlValue, xlSecondary).MinimumScale = 270
.Axes(xlValue, xlSecondary).MinimumScale = 80
.Axes(xlValue, xlSecondary).MaximumScale = 360
.Axes(xlValue, xlSecondary).MaximumScale = 440
.Axes(xlValue, xlSecondary).MajorUnit = 10
.Axes(xlValue, xlSecondary).MajorUnit = 40
End With
ActiveChart.HasLegend = True
ActiveChart.SeriesCollection(4).Select
ActiveChart.SeriesCollection(4).AxisGroup = 2
ActiveChart.Axes(xlCategory, xlPrimary).AxisTitle.Text = “y2″
ActiveChart.Axes(xlValue, xlPrimary).AxisTitle.Text = “y”
ActiveChart.ChartTitle.Text = “Profile”
ActiveChart.SetElement (msoElementSecondaryValueAxisTitleRotated)
ActiveChart.Axes(xlValue, xlSecondary).AxisTitle.Text = _
“date”
‘Ponemos tamaño 8 para el eje Y
ActiveChart.Axes(xlCategory).Select
ActiveChart.Axes(xlValue).HasMajorGridlines = True
ActiveChart.Axes(xlValue).Select
Selection.TickLabels.AutoScaleFont = True
With Selection.TickLabels.Font
.Size = 12
End With
‘Ponemos tamaño 8 para el eje X
ActiveChart.Axes(xlCategory).Select
Selection.TickLabels.AutoScaleFont = True
With Selection.TickLabels.Font
.Size = 12
End With
‘Ponemos el título en negrita
ActiveChart.ChartTitle.Select
Selection.Font.Bold = True
‘Volvemos a la celda donde estábamos inicialmente
Range(celda_donde_estamos).Select
‘Mostramos el procedimiento
Application.ScreenUpdating = True
End Sub[/PHP]

anexo el link del archivo que aqui no me permitio subirlo por que era muy grande espero esto si se pueda: http://dl.dropbox.com/u/95230904/graficos.zip

este archivo tiene un boton llamado graficar que al seleccionar una casilla del rango te grafica todo el rango, esta diseñado para graficar los rangos desde la columna second solo hay que seleccionar la casilla de esa columna y y dar clic al boton graficar y graficara el primer rango y de ay hay que seleccionar la primera casilla del otro rango para generar la otra grafica y asi sucesibamente, lo que deseo es saber como acomodar las graficas como las que estan al lado derecho que se realizaron manualmente y que el boton vaya bajando automaticamente de antemano gracias saludos.

publicado

Como no ajustes lo que pides a las normas del foro.........creo que esperarás sin respuesta en el horizonte.....

Un saludo,

Tese

publicado

creo que solo la norma que no segui es la siguiente 6. Las fórmulas o códigos tienen que estar siempre envueltas con las etiquetas CODE, PHP o HTML. Más información en: Envolver fórmulas y códigos con etiquetas en los mensajes.

y 5. Adjunta siempre un archivo con la estructura de trabajo y los resultados que esperas obtener y de cómo obtienes los datos. No es necesario el archivo completo, una simple parte de los datos y la estructura del mismo es suficiente. Tipos de Archivos permitidos para subir al foro. No adjuntes imágenes nunca, las imágenes no nos sirven para buscar la solución adecuada.

soy novato asi que me gustaria que me ayudaras a ver como se trabaja en el foro gracias de antemano saludos.

publicado

Buenos días novato ebetapia bienvenido

Ya que sabes que errores cometiste deberías de reparar el error o no lo crees así????, sube tu archivo para entender mejor tu pregunta y te ayudaran gratamente en la solicitud que estas haciendo.

Saludos

publicado

he investigado y leido un poco y encontre que estas son las propiedades para mover una grafica en determinada pocicion me gustaria solo saber como implementarla para los n graficos que puedo generar con este codigo y se vayan acomodando una debajo de la otra

.Left = 100

.Top = 200

publicado

bueno por lo bisto no hubo respuesta y pues ya encontre la respuesta selas dejo por si alguien la ocupa gracias de todos modos :nevreness::drunk::highly_amused:

Sub ArrangeMyCharts()
Dim iChart As Long
Dim nCharts As Long
Dim dTop As Double
Dim dLeft As Double
Dim dHeight As Double
Dim dWidth As Double
Dim nColumns As Long
dTop = 200 ' top of first row of charts
dLeft = 1500 ' left of first column of charts
dHeight = 450 ' height of all charts
dWidth = 900 ' width of all charts
nColumns = 2 ' number of columns of charts
nCharts = ActiveSheet.ChartObjects.Count
For iChart = 1 To nCharts
With ActiveSheet.ChartObjects(iChart)
.Height = dHeight
.Width = dWidth
.Top = dTop + Int((iChart - 1) / nColumns) * dHeight
.Left = dLeft + ((iChart - 1) Mod nColumns) * dWidth
End With
Next
End Sub
[/php]

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.