Pregunta

Tengo varios gráficos dinámicos, cada uno con su propia tabla dinámica en hojas de trabajo separadas en Excel 2002.

Cuando intento generar estos gráficos con VBA con el siguiente código:

Set cht = Charts.Add(After:=Worksheets("Setup"))
With cht
    ' we use named ranges here
    .SetSourceData Source:=range(tblName)
    .Name = chtName

....

donde tblName es un rango con nombre que se acaba de crear unas líneas antes, el código funciona bien si solo se genera una tabla y un gráfico, pero me da un error de tiempo de ejecución 1004:"Los datos de origen de un informe de gráfico dinámico no se pueden cambiar..." si intento generar una tabla dinámica y un conjunto de gráficos uno tras otro.

Al ir a Insertar -> Nombre -> Definir, la lista de rangos con nombre creados parece ser correcta.

¿Cuál es la forma correcta de configurar los datos de origen para un gráfico dinámico con un rango dinámico?

¿Fue útil?

Solución 2

Este fragmento de código supone que tiene solo una tabla dinámica por hoja y que la tabla dinámica comienza en la celda A1:

Sheets(wsName).Select
Range("A1").Select
Set cht = Charts.Add(after:=Worksheets(Worksheets.Count))
With cht
    .SetSourceData Sheets(wsName).Range("A1")
    .Name = chtName

...

También parece que cambiar "Worksheets.Count" a un nombre de hoja de trabajo específico también desencadena ese error.

Otros consejos

Creo que quizás estés intentando hacer demasiadas cosas a la vez.

Si la fuente de datos va a cambiar, no usaría un gráfico dinámico.

Utilice una tabla dinámica, cree el gráfico en tiempo de ejecución (como su ejemplo).Construya su gráfico de los resultados de la tabla dinámica.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top