VBA copier une feuille de calcul de graphique à partir d'un modèle

1

J'ai un graphique de feuille de calcul que je veux utiliser comme modèle dans une macro. J'essaie de copier la feuille et de l'assigner à un objet de type graphique, mais je ne peux pas le faire fonctionner.

Ci-dessous dans le code sont deux lignes de code de travail pour créer ou copier une feuille de graphique.

Le problème vient de la dernière ligne de code. Il copie la feuille mais commet des erreurs avant de passer à la ligne suivante (erreur d'erreur 424 requise).

Quelqu'un peut-il expliquer pourquoi cela se produit et une solution pour affecter la feuille sur une ligne.

Pour l'instant, ma solution consiste à copier le modèle, puis à définir WS_chart3 sur la feuille active. Je n'aime pas les références à la feuille active si je peux les éviter.

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
gtwebb
la source

Réponses:

2

Un problème certain est que la méthode Copy ne renvoie pas d'objet (elle ne renvoie rien). Vous devez donc d'abord effectuer la copie, puis récupérer la nouvelle feuille et l'affecter à la variable.

Je pense que vous pouvez juste faire

Dim SheetBeforeChart3 As Long

SheetBeforeChart3 = Sheets.Count
Sheets("template").Copy After:=Sheets(SheetBeforeChart3)

Set WS_chart3 = Sheets(SheetBeforeChart3 + 1)

Cependant, je ne connais pas vraiment Excel VBA, il pourrait y avoir d'autres problèmes, j'espère que cela vous aidera tout de même.

gbr
la source
Ouais c'est semblable à ce que j'ai fait template.Copy After:=Sheets(Sheets.Count) Set WS_chart = ActiveSheet Votre façon de faire a l’avantage de ne pas compter sur la feuille active. Cela nous donnera un peu plus de temps pour voir si d’autres suggestions nous parviennent.
gtwebb