我移植一些代码,我用它来从运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).Format.Shadow.Visible为msoFalse管理运行的SeriesCollection无需任何明显的影响?
每下面的评论线程,这里是左边的宏输出的撷取画面,点阴影打开再关在中间,和阴影打开右侧。 我编辑的宏删除的传说和网格线,为清楚起见。 它看起来像宏输出具有比状态下的“影子”影子少,但更多的阴影比“影子关闭”状态。
一些在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
您看到的影子,其实并不是一个影子。 我的意思是这是默认方式标记看起来没有阴影。
不幸的是,你不能做这件事。 请参阅下面的快照,你会明白我的意思。
快照:
替代方案:
您可以用标记大小却发挥,以尽量减少影响。 试试这个代码。
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
在Mac的Excel图表该免费多余的格式已经严重阻碍了我的许多程序到Mac的转换。 幸好我发现:
ActiveChart.ChartStyle = 2
该应用默认格式,无需阴影,渐变和光晕。 没有必要回去,重新在图表中的每个系列的每一个细节。
点击数据系列,到数据系列格式。 下影选项,“影子”框可能会被取消选中,对不对? 核实。 这将激活下面的编辑控件。 然后设置“透明度”到100%。 而且你还可以设置“颜色”设置为白色。
你可以杀死通过图表图例阴影:
cht.Chart.Legend.LegendEntries(1).LegendKey.Shadow =假
这种不羁图表的行为是不能容忍的! 断念朦胧系列...
With .Shadow
.ForeColor.RGB = &HFFFFFF
.Visible = msoFalse
End With