首页 > 解决方案 > Series.Format.Fill.Transparency 属性不应用格式

问题描述

我有一个图表,我在其中创建了许多使用该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

标签: excelvbaformattransparencyseries

解决方案


看来我可能已经解决了这个问题。出于某种原因,如果要使用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

推荐阅读