【发布时间】:2017-05-03 13:11:43
【问题描述】:
我正在寻找一种方法来恢复 Excel 2010 中图表的默认/本机大小调整行为,一旦它被禁用(例如,通过使用 VBA 操作图表)。
现在我无法在任何地方找到关于我所想到的行为的任何信息,所以我假设它需要详细解释。
在 Excel 的 4-5 个单元格中输入并选择随机数值数据,然后插入一个新的聚簇柱形图。您需要查看图表的绘图区域。现在选择图表,并使用以下行获取 PlotArea.Top 值
ActiveChart.PlotArea.Top
如果您还没有触摸图表,这应该返回值 7。现在使用图表的把手之一来调整图表的大小垂直,并再次使用相同的命令行。
activechart.plotarea.top
注意返回的值仍然是 7。现在在 VBA 中设置这个属性为 7。
ActiveChart.PlotArea.Top = 7
再次,抓住其中一个把手,垂直调整图表大小并再次使用以下方法获取 .top 属性:
ActiveChart.PlotArea.Top
注意该值现在是如何变化的。它会小于或大于 7,具体取决于您是减小还是增大图表的大小。
一旦图表的任何元素被手动或使用 VBA 代码移动,它就会失去这个“绝对位置”属性,并在图表调整大小时开始在 ChartArea 内移动。虽然可以使用 .SetElement 重置某些元素,但这不适用于绘图区域。例如,以下命令行不会恢复我所描述的行为。
ActiveChart.SetElement msoElementPlotAreaNone
ActiveChart.SetElement msoElementPlotAreaShow
我使用 VBA 自动调整图表大小,而让绘图区域自行移动使得预测调整图表大小的效果变得更加困难,并导致结果不稳定。
回到这个问题:有没有人知道恢复这种默认行为的方法,无论是针对整个图表,还是至少专门针对 PlotArea?
提前感谢任何可能提供帮助的人!
文森特
【问题讨论】:
-
我使用 ActiveChart.ClearToMatchStyle 得到的结果好坏参半
-
感谢您的建议!不幸的是,它在我的情况下不起作用(例如,对于情节区域)
-
是的...Excel有时就是这样。
标签: vba excel excel-2010 excel-charts