Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如果标记填充设置为自动,如何获取散点图系列标记BackgroundColor?_Excel_Vba_Charts - Fatal编程技术网

Excel 如果标记填充设置为自动,如何获取散点图系列标记BackgroundColor?

Excel 如果标记填充设置为自动,如何获取散点图系列标记BackgroundColor?,excel,vba,charts,Excel,Vba,Charts,我有多个系列的散点图和每个系列的趋势线。我想将趋势线数据标签设置为与系列“填充颜色”相同的颜色。该系列的填充颜色是自动的。.MarkerBackgroundColor属性为所有系列返回-1,而.MarkerBackgroundColorIndex为所有系列返回2。我相信只有当标记填充设置为自动时才会发生这种情况。但是,我不能改变这一点,因为图表中的序列是通过另一个基于动态数据的VBA代码添加的。有什么帮助吗 For i = 1 To Sheet1.ChartObjects("Chart 5").

我有多个系列的散点图和每个系列的趋势线。我想将趋势线数据标签设置为与系列“填充颜色”相同的颜色。该系列的填充颜色是自动的。
.MarkerBackgroundColor
属性为所有系列返回-1,而
.MarkerBackgroundColorIndex
为所有系列返回2。我相信只有当标记填充设置为自动时才会发生这种情况。但是,我不能改变这一点,因为图表中的序列是通过另一个基于动态数据的VBA代码添加的。有什么帮助吗

For i = 1 To Sheet1.ChartObjects("Chart 5").Chart.SeriesCollection.Count
    With Sheet1.ChartObjects("Chart 5").Chart.FullSeriesCollection(i)
       .Trendlines(1).DataLabel.Format.Fill.ForeColor.RGB = .MarkerBackgroundColor
    End With
Next i

在标记填充设置为“自动”的XY散点图中,Excel将按照与当前调色板中六种主题强调色相同的顺序应用颜色

如果图表有六个以上的系列,这些重点颜色的较浅/较深阴影将被应用,同样按照相同的顺序。实际上,浅色/深色的程度因Excel版本而异。屏幕截图显示了前12个系列的图例和Office 365的默认“Office”调色板,供您参考

因此,如果您知道序列在图表中的顺序,您可以推测其填充颜色。

谢谢teylyn

事实上,我通过使用
.Trendlines(1).Format.Line.ForeColor.RGB
而不是
.MarkerBackgroundColor
快速解决了这个问题,尽管Trendline颜色也设置为自动,但它的效果令人惊讶

以下是编辑后的代码:

For i = 1 To Sheet1.ChartObjects("Chart 5").Chart.SeriesCollection.Count
    With Sheet1.ChartObjects("Chart 5").Chart.FullSeriesCollection(i)
       .Trendlines(1).DataLabel.Format.Fill.ForeColor.RGB = .Trendlines(1).Format.Line.ForeColor.RGB
    End With
Next i