-->

关闭标记阴影VBA生成的Excel图表(Turn off marker shadow on vba-

2019-09-16 13:56发布

我移植一些代码,我用它来从运7 / Excel 2010中生成Excel中散点图,到OS X / Excel中2011年在Mac上,数据点显示了一个阴影。 我不想影子,我无法弄清楚如何摆脱它。

使用此工作表 (它只是在单元格A1随机数:如果你不想下载我启用了宏的工作表B6)下面的代码运行正常,但有阴影产生的数据点:

Sub plotNoShadow()

  Dim x As Range
  Dim y As Range

  Dim cht As ChartObject

  Set x = ActiveSheet.Range("A1:A6") 'haphazard numbers
  Set y = ActiveSheet.Range("B1:B6")

  Set cht = ActiveSheet.ChartObjects.Add(Left:=150, Top:=50, Width:=200, Height:=160)
  With cht.Chart
    .ChartType = xlXYScatter
    .SeriesCollection.NewSeries
    With .SeriesCollection(1)
        .XValues = x
        .Values = y
        .Format.Shadow.Visible = msoFalse 'This seems to parse, but have no effect
    End With
    .SetElement (msoElementLegendNone)
    .SetElement (msoElementPrimaryValueGridLinesNone)
  End With      
End Sub

谁能给我解释一下:

  1. 如何修改这个代码,以去除阴影,和

  2. 它是如何,这个代码运行,但设置(1).Format.Shadow.Visible为msoFalse管理运行的SeriesCollection无需任何明显的影响?

每下面的评论线程,这里是左边的宏输出的撷取画面,点阴影打开再关在中间,和阴影打开右侧。 我编辑的宏删除的传说和网格线,为清楚起见。 它看起来像宏输出具有比状态下的“影子”影子少,但更多的阴影比“影子关闭”状态。

Answer 1:

一些在Excel默认的图表样式产生轻微的3D效果也有轻微下拉阴影如前面所指出的。

在我的Excel(在Windows 7中),默认的图表样式为2,所以没有出现阴影或3D效果。 我怀疑,在Mac上,默认的图表风格不同。

为了解决这个问题,你可以设置在你的代码中的图表样式:

With cht.Chart
  .ChartType = xlXYScatter
  .ChartStyle = 2
  .....

在Excel中,ChartStyle设置必须修改图表的外观的各个方面,包括标记的外观的能力。 MarkStyle设置的唯一的事情就是标记的形状。 当ChartStyle改变所有的标记的其他外观方面覆盖。

编辑

以上说法也基本属实,但我已经找到了一种方法来关闭阴影。 就像用Excel很多东西,它并不像你想象的那么简单。 设置阴影的可见性属性有如果代码完成(无论何种原因)没有任何影响,所以你需要设置阴影类型为“无阴影”。

Sub plotNoShadow()

  Dim x As Range
  Dim y As Range

  Dim cht As ChartObject

  Set x = ActiveSheet.Range("A1:A6") 'haphazard numbers
  Set y = ActiveSheet.Range("B1:B6")

  Set cht = ActiveSheet.ChartObjects.Add(Left:=150, Top:=50, Width:=200, Height:=160)
  With cht.Chart
    .ChartType = xlXYScatter
    .ChartStyle = 26 'Something 3D with a default shadow. This line can be left out.
    .SeriesCollection.NewSeries
    With .SeriesCollection(1)
        .XValues = x
        .Values = y
        .Format.Shadow.Type = msoShadow30 'This is the code for an inner shadow
    End With
  .SetElement (msoElementLegendNone)
  .SetElement (msoElementPrimaryValueGridLinesNone)
  End With

End Sub

再次编辑

其实, msoShadow30是“内部阴影”的风格和可能看起来很奇怪取决于你的标记样式。 msoShadow41是我能找到的最接近“无阴影”。 它实际上是下面的阴影代码,但默认情况下,它是太微弱看到的。 如果它不出现,颜色可以随时改变,以使其消失。

甚至更好的tranparency设置为1(完全透明):

.Format.Shadow.Transparency = 1.0 'Fully transparent


Answer 2:

您看到的影子,其实并不是一个影子。 我的意思是这是默认方式标记看起来没有阴影。

不幸的是,你不能做这件事。 请参阅下面的快照,你会明白我的意思。

快照:

替代方案:

您可以用标记大小却发挥,以尽量减少影响。 试试这个代码。

Sub plotNoShadow()

  Dim x As Range
  Dim y As Range

  Dim cht As ChartObject

  Set x = ActiveSheet.Range("A1:A6") 'haphazard numbers
  Set y = ActiveSheet.Range("B1:B6")

  Set cht = ActiveSheet.ChartObjects.Add(Left:=150, Top:=50, Width:=200, Height:=160)
  With cht.Chart
    .ChartType = xlXYScatter
    .SeriesCollection.NewSeries
    With .SeriesCollection(1)
        .MarkerStyle = 2
        .MarkerSize = 7
        .XValues = x
        .Values = y
        .Format.Shadow.Visible = msoFalse 'This seems to parse, but have no effect
    End With
  End With

End Sub


Answer 3:

在Mac的Excel图表该免费多余的格式已经严重阻碍了我的许多程序到Mac的转换。 幸好我发现:

ActiveChart.ChartStyle = 2

该应用默认格式,无需阴影,渐变和光晕。 没有必要回去,重新在图表中的每个系列的每一个细节。



Answer 4:

点击数据系列,到数据系列格式。 下影选项,“影子”框可能会被取消选中,对不对? 核实。 这将激活下面的编辑控件。 然后设置“透明度”到100%。 而且你还可以设置“颜色”设置为白色。



Answer 5:

你可以杀死通过图表图例阴影:

cht.Chart.Legend.LegendEntries(1).LegendKey.Shadow =假



Answer 6:

这种不羁图表的行为是不能容忍的! 断念朦胧系列...

With .Shadow
    .ForeColor.RGB = &HFFFFFF
    .Visible = msoFalse
End With


文章来源: Turn off marker shadow on vba-generated Excel plots