VBA - 在修改其他ShadowFormat属性后获取Preset Shadow.Type图表类型

时间:2018-04-15 20:21:38

标签: excel vba excel-vba

我正在尝试确定对象的.Format.Shadow.Type是什么(本例中为ChartArea)。问题是,一旦你修改了ShadowFormat的另一个属性,.Type就会返回-2,这是一个msoShadowType,意思是msoShadowMixed。

此项目的一个方面是从一个图表(Chart1)复制图表元素,并将它们应用到不同的图表(Chart2)

With Chart1.ChartArea.Format.shadow
    Sheet1.Cells(1, 2).Value = .Visible
    Sheet1.Cells(2, 2).Value = .Style
    Sheet1.Cells(3, 2).Value = .Type
    Sheet1.Cells(4, 2).Value = .ForeColor.RGB
    Sheet1.Cells(5, 2).Value = .Transparency
    Sheet1.Cells(6, 2).Value = .Size
    Sheet1.Cells(7, 2).Value = .Blur
    Sheet1.Cells(8, 2).Value = .OffsetX
    Sheet1.Cells(9, 2).Value = .OffsetY
End With

您将在下面的示例中看到将这些设置应用回另一个图表时会发生什么。上面示例中的我的Chart1具有原始类型Chart1.ChartArea.Format.Shadow.Type = 21,但如果我修改了一个属性,例如大小Chart1.ChartArea.Format.Shadow.Size = 101,则原始现在返回.Type = -2

这是一个问题,因为如果您将上面捕获的每个值应用到另一个图表,则两个阴影将不相等。这是因为Chart1有一个基本预设然后被更改。我相信在选择.Type后会应用ShadowFormat设置。

此处Chart1的设置应用于Chart2。值得注意的是,Chart2没有选择.Type。在下面的代码中应用阴影之前没有阴影。

With Chart2.ChartArea.Format.shadow
    .Visible = Sheet1.Cells(1, 2).Value
    .Style = Sheet1.Cells(2, 2).Value
    .Type = Sheet1.Cells(3, 2).Value
    .ForeColor.RGB = Sheet1.Cells(4, 2).Value
    .Transparency = Sheet1.Cells(5, 2).Value
    .Size = Sheet1.Cells(6, 2).Value
    .Blur = Sheet1.Cells(7, 2).Value
    .OffsetX = Sheet1.Cells(8, 2).Value 
    .OffsetY = Sheet1.Cells(9, 2).Value
End With

这是两个图表在更改之前的样子。例如,Chart1具有非常明确的阴影。请注意,我首先将预设的.Type = 21应用于Chart1,然后修改其他属性:.Transparency = 0, .Size = 101, .Blur = 0, .OffsetX = 4,.OffsetY = 4

enter image description here

应用第二批代码的结果如下所示: enter image description here

您可以看到阴影不相等。如果我要替换Sheet1.Cells(3,2).Value = 21中的值而不是从Chart1中取出的-2,我们会得到两个看起来像这样的图表:

enter image description here

最后,我问是否有这个问题。我想知道是否有原始预设,或者在将一个对象的ShadowFormat复制到另一个对象时如何将预设考虑在内。

希望我提供了足够的信息。谢谢

0 个答案:

没有答案