Problemas al mover una gráfica hecha por macros

Tengo un inconveniente pues una macro me realiza un gráfico de una tabla de excel, la macro la hace y esta hecha para que la mueva y la cuadre en un lugar especifico, al momento de hacer el gráfico la macro resulta muy bien, el inconveniente esta al moverla pues excel asigna un nombre de "grafica1", "grafica2", la macro se programa con el nombre de grafica1, pero al volverla ejecutar ya va en grafica2, 3 y 4, ¿así qué nunca cuadra... Como podría programar la macro para que me mueva el gráfico?

1 respuesta

Respuesta
1
Si cuando creas la gráfica mediante la macro, esta queda seleccionada, por lo que mediante el objeto ActiveChart, podrías obtener el nombre de esa nueva gráfica. Cuando se usa la propiedad Name, esta toma el nombre de la hoja actual y de la gráfica uno junto al otro, ej: "Hoja 1 Gráfica 5", entonces debemos obtener sólo el nombre de la gráfica, se me ocurre hacerlo así:
n = Len(ActiveSheet.Name)
x = Mid(ActiveChart.Name, n + 2, 20)
Entonces en la variable por ahora tienes el nombre de tu nueva gráfica, la cual vas a reemplazar en el código donde tienes "Gráfica 1", colocando x.
Hola. Mil Gracia por Tu respuesta, Ejecute la macro y no funciono, creería que el inconveniente esta en que no siempre se llama "grafica1", al volverla a ejecutar cambia el nombre por lo que la macro se desubica, pensaría que la forma de hacerlo es un macro que se remita a esa gráfica que acabo de hacer, sin necesidad de dirigirse a mover estrictamente la grafica1
Gracias.
Claro ese es el problema, por eso te propuse cambiar el nombre de la gráfica por una variable.
Si puedes enviarme la macro que crea y mueve la gráfica por este medio te ayudare a hacer las correcciones.
Hola Mil Gracias, Mira la parte de la Macro en que crea y ubica la gráfica es:
Sub Grafica()
Range("A1:A7").Select
Charts.Add
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData Source:=Sheets("Hoja1").Range("A1:A7")
ActiveChart.Location Where:=xlLocationAsObject, Name:="Hoja1"
ActiveSheet.Shapes("Gráfico 1").IncrementLeft -109.5
ActiveSheet.Shapes("Gráfico 1").IncrementTop 0.75
End Sub
De Nuevo Gracias por tu ayuda.
Revisa la macro de esta forma:
Sub Grafica()
    Range("A1:A7").Select
    Charts.Add
    ActiveChart.ChartType = xlColumnClustered
    ActiveChart.SetSourceData Source:=Sheets("Hoja1").Range("A1:A7")
    ActiveChart.Location Where:=xlLocationAsObject, Name:="Hoja1"
    n = Len("Hoja1")
    x = Mid(ActiveChart.Name, n + 2, 20)
    ActiveSheet. Shapes(x). IncrementLeft -109.5
    ActiveSheet. Shapes(x). IncrementTop 0.75
End Sub

Me cuentas si no te funciona.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas