Series.Format.Fill.Transparency属性未应用格式

时间:2019-07-05 14:39:41

标签: excel vba format transparency series

我有一个图表,其中使用Chart.SeriesCollection.NewSeries方法创建了许多新系列,之后立即格式化每个系列。我通过Series.Format.Fill.Transparency属性设置的所有格式似乎都可以使用(标记大小/样式/颜色)条标记透明度。

我见过人们使用选择方法来设置序列标记的透明度,如下所示:

 Set GraphSeries.Absolute.ErraticErrors = AbsChart.SeriesCollection.NewSeries
With GraphSeries.Absolute.ErraticErrors
    .Name = "ErraticSeries"
    .MarkerSize = CommonMarkerSize
    .MarkerBackgroundColorIndex = Graph.XY.Formatting.MarkerFillColour.ErraticErrors
    .MarkerForegroundColor = Graph.XY.Formatting.MarkerLineColur.ErraticErrors
    .Select
        Selection.Format.Fill.Transparency = CommonMarkerTrans
    .Format.Line.Visible = msoFalse
End With

在尝试了上述方法并对其进行故障排除之后,似乎设置了标记透明度后,可以看到标记背景颜色会改变值,而不是保持其初始值的透明度,这奇怪吗?基于此发现,我返回到Series.Format.Fill.Transparency = CommonMarkerTrans,并在监视窗口中查看了该属性,同时将其设置为CommonMarkerTrans,并观察到初始值of Series.Format.Fill.Transparency没有变化(-2.147484E + 09 ),也很奇怪?

当尝试通过Series.Format.Fill.Transparency将其设置为CommonMarkerTrans时,似乎Series.Format.Fill.Transparency = CommonMarkerTrans属性的初始值没有改变

注意:CommonMarkerTrans = 0.9(单身)

任何人都知道为什么会这样吗?我真的很困惑,这可能与我设置标记格式的顺序有关吗?

下面显示了提供上下文的代码段。该代码创建一个“空”图表系列,然后应用各种格式(例如标记大小),然后根据存储在两个单独数组中的数据设置系列X和Y值。

Set GraphSeries.Absolute.ErraticErrors = AbsChart.SeriesCollection.NewSeries
With GraphSeries.Absolute.ErraticErrors
    .Name = "ErraticSeries"
    .MarkerSize = CommonMarkerSize
    .Format.Fill.Transparency = CommonMarkerTrans
    .MarkerBackgroundColorIndex = Graph.XY.Formatting.MarkerFillColour.ErraticErrors
    .MarkerForegroundColor = Graph.XY.Formatting.MarkerLineColur.ErraticErrors
    .Format.Line.Visible = msoFalse
End With

RelOrAbsChart.SeriesCollection(SeriesName.ErraticSeries).XValues = XAxisRelOrAbs.ErraticSeries
RelOrAbsChart.SeriesCollection(SeriesName.ErraticSeries).Values = YAxisRelOrAbs.ErraticSeries

1 个答案:

答案 0 :(得分:0)

似乎我已经解决了这个问题。由于某些原因,如果要使用Fromat.Fill. Transparency设置标记的透明度,必须使用以下属性设置系列标记的背景色/背景色

 Series.Format.Fill.ForeColor.RGB = RGB(R,G,B)
 Series.Format.Fill.BackColor.RGB = RGB(R,G,B)

不是

Series.MarkerBackgroundColor = RGB(R,G,B)
Series.MarkerForegroundColor = RGB(R,G,B)

不确定为什么是这种情况,似乎有两个单独的属性来设置“标记” /背景色,而不能同时为这两个属性设置透明度,这让人感到困惑。

为什么同一件事需要两个独立且互斥的属性?为了清楚起见,也许有人可以解决这个问题或纠正我的理解?

现在可以正确设置颜色和透明度的功能代码:

    Set GraphSeries.Absolute.ErraticErrors = AbsChart.SeriesCollection.NewSeries
    With GraphSeries.Absolute.ErraticErrors
        .Name = "ErraticSeries"
        .MarkerSize = CommonMarkerSize
        .MarkerStyle = xlMarkerStyleCircle
        With .Format.Fill
            .Visible = msoTrue
            .ForeColor.RGB = Graph.XY.Formatting.MarkerFillColour.ErraticErrors
            .BackColor.RGB = Graph.XY.Formatting.MarkerLineColur.ErraticErrors
            .Transparency = CommonMarkerTrans
            .Visible = msoTrue
        End With
    End with