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

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

现在我还没有find任何关于我心目中的行为的东西,所以我想假设它需要详细的解释。

在Excel中input并select随机数字数据到4-5个单元格,然后插入一个新的聚集列图表。 您需要查看图表的绘图区域。 现在select图表,并用下面一行获取PlotArea.Top值

ActiveChart.PlotArea.Top 

如果尚未触及图表,则返回值为7.现在,使用图表的一个图柄来垂直调整图表的大小,然后再次使用相同的命令行。

 activechart.plotarea.top 

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

 ActiveChart.PlotArea.Top = 7 

再次,抓住一个把手, 垂直调整图表的大小,再次使用.top属性:

 ActiveChart.PlotArea.Top 

注意值现在已经改变了。 根据你减less或增加图表的大小,它将会小于或大于7。

一旦图表中的任何元素被手动或使用VBA代码移动,它就会丢失这个“绝对位置”属性,并在图表resize时开始在ChartArea内移动。 尽pipe某些元素可以使用.SetElement重置,但这对于绘图区域不起作用。 例如,下面的命令行不会恢复我所描述的行为。

 ActiveChart.SetElement msoElementPlotAreaNone ActiveChart.SetElement msoElementPlotAreaShow 

我使用VBA做了很多自动调整图表的大小,并且让绘图区域自行移动,这使得预测调整图表大小的效果变得更加困难,并导致结果不一致。

所以回到问题:有没有人知道一种方法来恢复这种默认行为,无论是整个图表,或者至less专门为PlotArea?

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

文森特

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

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

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

这是我用来恢复自动调整行为的macros

 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 

参考

  • 清除系列图例后,为什么绘图区域不扩大?
  • Excel图表绘图区自动大小 – ExcelBanter