Ihnen haben die Kreisdiagramme in den Blasendiagrammen gefallen?
Ein bisschen hab ich den Code (Punkt 4) inzwischen verfeinert. Und zwar:
- Parameter ergänzt – damit lässt sich die Prozedur für unterschiedliche Diagramme und unterschiedliche Datenbereiche verwenden
- Beispielfarben fixiert – wenn Sie im Beispiel die Farben ändern, gehen sie nicht „unterwegs“ verloren
- Pause eingefügt – damit das Kreisdiagramm nicht „fotografiert“ wird, bevor es fertig hergerichtet ist
- beliebige Datenreihe aus dem Wertebereich als Quelle für den Beispielkreis ermöglicht (damit Sie in der Vorbereitung keine Nullwerte haben)
Sub PieMarkers1() Call PieMarkers("BspKreis", "ErgBlasen", "KreisWerte") End Sub
Sub PieMarkers2() Call PieMarkers("BspKreis2", "ErgBlasen2", "KreisWerte2") End Sub
Sub PieMarkers(Name_Pie As Variant, Name_Bubbles As Variant, Name_Values As Variant)
Dim myPie As Chart Dim myBubbles As Chart Dim myRow As Range Dim Point_I As Long Dim I As Long Dim mySh As Worksheet Dim numCols As Long Dim myAcc() As Long Dim myRGB() As Long Dim waitTime As Date Dim I_Row As Long
Set mySh = ActiveSheet Set myPie = mySh.ChartObjects(Name_Pie).Chart Set myBubbles = mySh.ChartObjects(Name_Bubbles).Chart Point_I = 0 numCols = Range(ThisWorkbook.Names(Name_Values).RefersTo).Rows(1).Cells.Count ReDim myAcc(numCols) ReDim myRGB(numCols) For I = 1 To numCols With myPie.SeriesCollection(1).Points(I).Format.Fill myAcc(I) = .ForeColor.ObjectThemeColor myRGB(I) = .ForeColor.RGB End With Next I I_Row = Val(Mid(myPie.SeriesCollection(1).FormulaR1C1, InStr(1, myPie.SeriesCollection(1).FormulaR1C1, "!R") + 2, 3)) _ - Range(ThisWorkbook.Names(Name_Values).RefersTo).Row + 1 For Each myRow In Range(Name_Values).Rows myPie.SeriesCollection(1).Values = myRow For I = 1 To myRow.Cells.Count With myPie.SeriesCollection(1).Points(I).Format.Fill If myAcc(I) <> 0 Then .ForeColor.ObjectThemeColor = myAcc(I) End If .ForeColor.RGB = myRGB(I) End With Next I waitTime = DateAdd("s", 0.5, Now) Application.Wait waitTime myPie.Parent.CopyPicture xlScreen, xlPicture Point_I = Point_I + 1 myBubbles.SeriesCollection(1).Points(Point_I).Paste Next myPie.SeriesCollection(1).Values = Range(Name_Values).Rows(I_Row) Application.ScreenUpdating = True
End Sub
Liebe Katharina,
vielen Dank für den Code.Schnipsel, das funktioniert super! Einzig ändert sich leider das Format der Kuchendiagramme: wenn man einstellt, dass die einzelnen Stücke außen keine Linie haben überträgt sich das leider nicht auf die anderen Diagramme. Hat man einen Punkt, der zu 100% aus einer Farbe bestehen soll entsteht so oben eine weiße Linie. Kannst Du hier helfen?
LikeLike
Hallo Sarah,
das müsste ich mir anschauen – katharina.schwarzer@soprani.at
lg
Katharina
LikeLike