2016-04-28 2 views
1

J'ai regardé partout pendant quelques jours et personne ne semble avoir eu mon problème. J'essaie de créer un graphique incorporé en utilisant les informations d'une feuille de calcul différente et de le manipuler (redimensionner etc.)VBA - Shapes - .name - Erreur d'exécution '7': Mémoire insuffisante

Chaque fois que j'essaie de renommer le graphique à partir de .name, j'obtiens l'erreur d'exécution mentionnée. Pour essayer de contourner cette erreur, j'ai fait .name en tant que variable (LineSubject), puis j'ai essayé de l'utiliser dans la colonne .Shapes (LineSubject) mais j'ai reçu une erreur disant qu'il est incapable de trouver le nom de la forme. J'ai également trouvé que les gens ont utilisé .Parent.Name .. Je suis en mesure de modifier le nom mais cela ne me permet pas de l'entrer dans l'espace .Shapes (NAME).

Set wLineGraphs = ActiveWorkbook.Sheets("Graphs") 
wLineGraphs.Activate 

ActiveSheet.Shapes.AddChart2(332, xlLineMarkers).Select 
Set LineChart = ActiveChart 
    With LineChart 
     .ChartType = xlLineMarkers 
     .SetSourceData Source:=wGraphd.Range("A96:K99") 
     .ApplyLayout (3) 
     .ChartTitle.Text = HistRange 
     .Name = GraphNumber <-- Error Here 
     '.Parent.Name = GraphNumber 
    'Parent.Name spits out "Chart 2" 
     'LineSubject = .Name 
    '.Name spits out "Graph Chart 2" 
     '.Shapes("Chart 2").Top = wLineGraphs.Cells(360, 2).Top 
     '.Shapes(LineSubject).Left = wLineGraphs.Cells(360, 2).Left 
    End With 

Le résultat final Je cherche, est d'être en mesure d'utiliser le nom du tableau dans les .Shapes (INSERTNAME) donc je suis en mesure de manipuler le tableau librement.

Merci pour l'aide :) p.s J'utilise Excel 2016, j'ai aussi essayé ceci sur Excel 2010 et la même erreur s'est produite.

Répondre

0

Vous devez définir la propriété .Name sur l'objet Shape au lieu du Chart:

With ActiveSheet.Shapes.AddChart(332, xlLineMarkers) 
    .Name = "name" 
    With .Chart 
     .ChartType = xlLineMarkers 
     .ApplyLayout 3 
     .SetSourceData Source:=ActiveSheet.Range("A96:K99") 
     .ChartTitle.text = "title" 
    End With 

End With 
+0

Merci beaucoup! Cela a résolu mon problème! <3 –

+0

Si cela fonctionne peut-être vous devriez signaler la réponse comme acceptée? –