Tengo un gráfico de hoja de trabajo que quiero usar como plantilla en una macro. Estoy intentando copiar la hoja y asignarla a un objeto de tipo gráfico pero no logro que funcione.
A continuación, en el código, hay dos líneas de código de trabajo para crear o copiar una hoja de gráfico.
El problema viene de la última línea de código. Copia la hoja pero luego genera errores antes de pasar a la siguiente línea (se requiere el objeto de error 424).
¿Alguien puede explicar por qué sucede esto y una solución para asignar la hoja en una línea?
En este momento mi solución es copiar la plantilla y luego configurar WS_chart3 en la hoja activa, simplemente no me gustan las referencias a la hoja activa si puedo evitarlas.
Sub test()
Dim WS_chart2 As Chart
Dim WS_chart3 As Chart
'adds chart sheet but doesn't use a template
Set WS_chart2 = Charts.Add(After:=Sheets(Sheets.Count))
'adds sheet but doesn't asign in to variable WS_chart2
Sheets("template").Copy After:=Sheets(Sheets.Count)
'adds chart sheet but then errors out
Set WS_chart3 = Sheets("template").Copy(After:=Sheets(Sheets.Count))
End Sub
Respuesta1
Un problema seguro es que el método Copiar no devuelve un objeto (no devuelve nada), por lo que primero debes hacer la copia y luego obtener la nueva hoja y asignarla a la variable.
Creo que puedes hacer
Dim SheetBeforeChart3 As Long
SheetBeforeChart3 = Sheets.Count
Sheets("template").Copy After:=Sheets(SheetBeforeChart3)
Set WS_chart3 = Sheets(SheetBeforeChart3 + 1)
Realmente no conozco Excel VBA, puede haber otros problemas, espero que esto te ayude un poco de todos modos.