Colocar grafico

03/04/2006 - 16:12 por carmen | Informe spam
Hola!
Tengo una macro que realiza varios calculos y con los resultados me
genera tres graficos. La idea es que el usuario final solo tenga que
apretar un boton y obtenga toda la informacion impresa, asi que pongo
todos mis resultadillos en una hoja, y los imprimo, pero no se colocar
los graficos donde yo quiero, creo que

Worksheets("Hoja 1").ChartObjects("Grafico 1").Top = _
Worksheets("Hoja 1").Rows(2).Top

deberia funcionar, pero no se cambiarle el nombre a mis graficos!!!!!
Es decir, que cada vez que ejecuto, tengo un nuevo grafico con nombres
sucesivos...Que hago?
Alguien me puede echar una mano?

Muchas gracias!!!!
 

Leer las respuestas

#1 Héctor Miguel
04/04/2006 - 02:28 | Informe spam
hola, carmen !

... una macro... genera tres graficos.
La idea es que el usuario final solo tenga queapretar un boton y obtenga toda la informacion impresa
... pero no se colocar los graficos donde yo quiero, creo que
Worksheets("Hoja 1").ChartObjects("Grafico 1").Top = _
Worksheets("Hoja 1").Rows(2).Top
deberia funcionar, pero no se cambiarle el nombre a mis graficos!!!!!
Es decir, que cada vez que ejecuto, tengo un nuevo grafico con nombres sucesivos. Que hago?



considerando que excel 'asigna' los nombres a los objetos incrustados EN el idioma en que esta instalado...
[y para -tratar de- evitar un embrollo en andar 'cachando' cada objeto y asignandole un nombre 'controlado']...
prueba a adaptar/modificar/corregir/... dos ejemplos que te expongo al final del presente ;)
considerando que podria haber otro numero de 'eventualidades' [como el numero de graficos 'generados']...
los ejemplos usan el indice [o cuenta] de graficos incrustados en la hoja1 ;)

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
=op1: suponiendo que deseas iniciar en la fila 2 con 'saltos' a cada 8 filas [o las que decidas]...
Sub Graficos_en_cascada()
Dim Sig As Byte
With Worksheets("hoja1")
For Sig = 1 To .ChartObjects.Count
.ChartObjects(Sig).Top = .Rows(2 + (Sig - 1) * 8).Top
.ChartObjects(Sig).Left = .ChartObjects(1).Left
Next
End With
End Sub

op2: suponiendo que deseas que los graficos se acomoden cada uno debajo del anterior...
Sub Graficos_ordenados()
Dim Sig As Byte
With Worksheets("hoja1")
.ChartObjects(1).Top = .Rows(2).Top
For Sig = 2 To .ChartObjects.Count
.ChartObjects(Sig).Top = _
.ChartObjects(Sig - 1).Top + .ChartObjects(Sig - 1).Height
.ChartObjects(Sig).Left = .ChartObjects(1).Left
Next
End With
End Sub

Preguntas similares