使用VBA恢复Excel图表默认调整大小行为

时间:2014-12-08 21:01:12

标签: excel vba excel-vba excel-2010 excel-charts

我正在寻找一种方法来恢复Excel 2010中图表的默认/本机大小调整行为(例如,通过使用VBA操作图表)。

现在我无法找到任何关于我想到的行为的内容,所以我假设它需要详细解释。

在Excel中输入并选择4-5个单元格中的随机数值数据,然后插入新的Clustered Columns图表。您需要查看图表的绘图区域。现在选择图表,并使用以下行获取PlotArea.Top值

ActiveChart.PlotArea.Top

如果您没有触及图表,则应返回值7.现在使用图表的一个把手来垂直调整图表的颜色,并再次使用相同的命令行。

activechart.plotarea.top

注意返回的值仍然是7.现在在VBA中将此属性设置为

ActiveChart.PlotArea.Top = 7

再次,抓住其中一个把手,垂直调整图表垂直并使用以下方式再次获取.top属性:

ActiveChart.PlotArea.Top

注意值现在如何变化。它将小于或大于7,具体取决于您减少或增加图表的大小。

一旦手动或使用VBA代码移动图表的任何元素,它就会丢失此“绝对位置”属性,并在图表调整大小时开始在ChartArea中移动。虽然可以使用.SetElement重置某些元素,但这不适用于绘图区域。例如,以下命令行不会恢复我描述的行为。

ActiveChart.SetElement msoElementPlotAreaNone
ActiveChart.SetElement msoElementPlotAreaShow

我使用VBA对图表进行了大量的自动调整,并且让绘图区域自行移动使得预测调整图表大小的效果变得更加困难并导致结果不稳定。

回到这个问题:有没有人知道恢复这种默认行为的方法,无论是对整个图表,还是至少专门用于PlotArea?

提前感谢任何可能提供帮助的人!

文森特

1 个答案:

答案 0 :(得分:2)

当我手动调整绘图区域的大小时,我遇到了这个问题,然后当图例被移动时,它根本没有调整绘图区域的大小。

我曾尝试将我的图表保存为模板(右键单击Excel 2013中的另存为模板),但仍然手动设置了绘图区域。

因此我建议在保存模板之前保持自动调整大小的行为,因为我知道在手动修改后重新设置图表自动调整大小行为的唯一方法是使用宏

这是我用来恢复自动调整大小行为的宏

Sub Macro1()
'
  ' this selects the chart based on the chart name
  ActiveSheet.ChartObjects("Chart 4").Activate
  ' this selects the plot area
  ActiveChart.PlotArea.Select
  ' this clears any custom formatting such as borders or fill colors
  ActiveChart.PlotArea.ClearFormats
  ' this resets the auto-sizing behavior after plot area manually re-sized
  ActiveChart.PlotArea.Position = xlChartElementPositionAutomatic
End Sub

参考