2017-05-09 2 views
0

Ich versuche, die Rahmenfarbe eines Diagramms, das als Form hinzugefügt wurde, zu ändern. Ich habe versucht, Macro Recorder zu verwenden, aber der Code funktioniert nicht, wenn er zu meinem eigenen Code hinzugefügt wird. Es gibt ein Problem mit dem Shape-Objekt, auf das es verweist. Könnte mir bitte jemand dabei helfen?Change Chart Rahmenfarbe hinzugefügt als Shape-Objekt VBA Excel

-Code hinzufügen Diagramm in Excel verwendet:

Set Cht = ActiveSheet.Shapes.AddChart(Left:=, Width:=, Top:=, Height:=).Chart 

-Code Macro Recorder aufgezeichnet:

With ActiveSheet.Shapes("Chart 1").Line 'Line and pattern color 
    .Visible = msoTrue 
    .ForeColor.ObjectThemeColor = msoThemeColorAccent1 
    .ForeColor.TintAndShade = 0 
    .ForeColor.Brightness = 0 
    .Transparency = 0 
    .Weight = 2 
End With 
ActiveSheet.ChartObjects("Chart 1").Activate 
With ActiveSheet.Shapes("Chart 1").Fill 
     .Visible = msoTrue 
     .ForeColor.ObjectThemeColor = msoThemeColorAccent1 
     .ForeColor.TintAndShade = 0 
     .ForeColor.Brightness = 0.8000000119 
     .Transparency = 0 
     .Solid 
End With 

Überraschenderweise funktioniert der Code für Chart1 aber nicht funktioniert, wenn ich zu Chart2 bewegen. Lassen Sie mich wissen, wenn Sie weitere Informationen benötigen.

Dank

+0

Wo ist der Abbildung 2-Code? Wo stürzt es ab? – jivko

+0

@Ayush versuchen Sie mehrere Diagramme zu aktualisieren? –

+0

Danke, dass du dir das angeschaut hast. @Shai Rado - Ja, ich habe 3 Diagramme in einem einzigen Blatt und ich muss diese Formatierungsänderungen auf alle anwenden. – Ayush

Antwort

0

Versuchen Sie den Code unten, um eine Schleife durch alle Shapes, und wenn die Form Typ msoChart dann ändern Sie die Grenze und Eigenschaften füllen.

-Code

Option Explicit 

Sub FormatMultiCharts() 

Dim MyCht  As Shape 

For Each MyCht In ActiveSheet.Shapes 
    If MyCht.Type Like msoChart Then ' check if shape type is chart 
     With MyCht.Line 
      .Visible = msoTrue 
      .ForeColor.ObjectThemeColor = msoThemeColorAccent1 
      .ForeColor.TintAndShade = 0 
      .ForeColor.Brightness = 0 
      .Transparency = 0 
      .Weight = 2 
     End With 

     With MyCht.Fill 
      .Visible = msoTrue 
      .ForeColor.ObjectThemeColor = msoThemeColorAccent1 
      .ForeColor.TintAndShade = 0 
      .ForeColor.Brightness = 0.8000000119 
      .Transparency = 0 
      .Solid 
     End With 
    End If 
Next MyCht 

End Sub 
+0

Das ist perfekt! Danke vielmals! – Ayush