我正在移植一些代码,用于在Excel中从Win 7 / Excel 2010到OS X / Excel 2011生成散点图。在Mac上,数据点显示阴影。我不想要阴影,我无法弄清楚如何摆脱它。
使用this worksheet(如果您不想下载启用宏的工作表,它只在单元格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
任何人都可以向我解释:
如何修改此代码以删除阴影,
如何运行此代码,但将SeriesCollection(1).Format.Shadow.Visible设置为msoFalse会设置运行而不会产生任何明显影响?
根据下面的评论帖子,这里是左侧宏输出的屏幕截图,阴影打开然后在中间关闭,阴影在右边打开。为清晰起见,我编辑了宏以删除图例和网格线。 看起来宏输出的阴影比“阴影开启”状态少,但阴影比“阴影关闭”状态更多。
答案 0 :(得分:6)
Excel中的一些产生轻微3D效果的默认图表样式也有一个小的阴影,如前所述。
在我的Excel(在Windows 7中)中,默认图表样式为2,因此不会显示阴影或3D效果。我怀疑在Mac上,默认的图表样式是不同的。
要解决此问题,您可以在代码中设置图表样式:
With cht.Chart
.ChartType = xlXYScatter
.ChartStyle = 2
.....
在Excel中,ChartStyle设置可以修改图表外观的所有方面,包括标记的外观。 MarkStyle唯一设置的是Marker的形状。更改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
是我能找到的最接近“无阴影”的东西。它实际上是下面阴影的代码,但默认情况下,它看起来太微弱了。如果确实显示,则可以随时更改颜色以使其消失。
甚至更好,将透明度设置为1(完全透明):
.Format.Shadow.Transparency = 1.0 'Fully transparent
答案 1 :(得分: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
答案 2 :(得分:2)
Mac Excel图表中这种无端过多的格式化严重阻碍了我的许多程序转换为Mac。幸运的是我发现了:
ActiveChart.ChartStyle = 2
应用默认格式,不带阴影,渐变和发光。无需返回并重新格式化图表中每个系列的每个细节。
答案 3 :(得分:1)
单击数据系列,转到格式化数据系列。在Shadow选项下,“shadow”框可能会被取消选中,对吧?核实。这将激活下面的编辑控件。然后将'transparency'设置为100%。您还可以将“颜色”设置为白色。
答案 4 :(得分:0)
您可以通过图表图例终止阴影:
cht.Chart.Legend.LegendEntries(1).LegendKey.Shadow = False
答案 5 :(得分:0)
这种不守规矩的图表行为是不能容忍的! Desist shadowy系列......
With .Shadow
.ForeColor.RGB = &HFFFFFF
.Visible = msoFalse
End With