2016-04-28 8 views
1

Ich habe überall über ein paar Tage gesucht und niemand scheint mein Problem zu haben. Ich versuche, ein eingebettetes Diagramm mit Informationen aus einem anderen Arbeitsblatt zu machen und es zu manipulieren (Größe ändern usw.)VBA - Shapes - .name - Laufzeitfehler '7': Nicht genügend Speicher

Immer wenn ich versuche, das Diagramm von .name umzubenennen, erhalte ich den erwähnten Laufzeitfehler. Um diesen Fehler zu umgehen, habe ich .name als Variable (LineSubject) erstellt und dann versucht, das in der .Shapes (LineSubject) -Spalte zu verwenden, aber es wurde ein Fehler angezeigt, dass der Name der Form nicht gefunden werden kann. Ich habe auch Leute gefunden, die .Parent.Name verwendet haben .. Ich bin in der Lage, den Namen zu ändern, aber dies erlaubt mir nicht, es in den .Shapes (NAME) Raum einzugeben.

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 

Die Endergebnis ich suche, ist in der Lage sein, den Namen des Diagramms in dem .Shapes (Insert) zu verwenden, so dass ich im Stande bin, das Diagramm frei zu manipulieren.

Vielen Dank für die Hilfe :) ps. Ich benutze Excel 2016, ich habe dies auch auf Excel 2010 versucht und der gleiche Fehler ist aufgetreten.

Antwort

0

Sie sollen die .Name Eigenschaft auf das Shape Objekt gesetzt anstelle der 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

Ihnen so vielen Dank! Das hat mein Problem gelöst! <3 –

+0

Wenn es funktioniert, sollten Sie vielleicht die Antwort als akzeptiert markieren? –