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

使用VBA恢复Excel图表的默认大小调整行为,vba,excel,excel-2010,excel-charts,Vba,Excel,Excel 2010,Excel Charts,我正在寻找一种方法,以恢复Excel 2010中图表禁用后的默认/本机调整大小行为(例如,使用VBA操作图表) 现在,我还没有找到任何关于我心目中的行为的东西,所以我假设它需要详细的解释 在Excel中的4-5个单元格中输入并选择随机数字数据,然后插入新的聚集柱形图。您需要在图表的绘图区域中看到一个图标。现在选择图表,并使用以下行获取PlotArea.Top值 ActiveChart.PlotArea.Top 如果您尚未触摸图表,则返回的值应为7。现在使用图表的一个手柄垂直调整图表的大小,然后

我正在寻找一种方法,以恢复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代码移动图表的任何元素,它将丢失此“绝对位置”属性,并在调整图表大小时开始在图表区域内移动。虽然可以使用.SetElement重置某些元素,但这不适用于绘图区域。例如,以下命令行不会恢复我所描述的行为

ActiveChart.SetElement msoElementPlotAreaNone
ActiveChart.SetElement msoElementPlotAreaShow
我用VBA对图表进行了很多自动调整大小的操作,如果绘图区域自行移动,则很难预测调整图表大小的效果,并导致不稳定的结果

那么回到问题上来:有人知道恢复默认行为的方法吗,或者是整个图表,或者至少是专门针对绘图区域

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


Vincent

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

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

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

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

Sub宏1()
'
'这将根据图表名称选择图表
图表对象(“图表4”)。激活
'这将选择绘图区域
ActiveChart.PlotArea.Select
'这将清除任何自定义格式,如边框或填充颜色
ActiveChart.PlotArea.ClearFormats
'这将在手动重新调整打印区域大小后重置自动调整大小行为
ActiveChart.PlotArea.Position=xlChartElementPositionAutomatic
端接头
参考资料


我使用ActiveChart.ClearTomatchStyle的结果好坏参半,谢谢你的建议!不幸的是,它在我的情况下不起作用(例如,对于绘图区域)是的。。。Excel有时也是这样。哇,真不敢相信有人最终发现了这一点:)经过一点测试后,
xlChartElementPositionAutomatic
属性看起来和我想要的一模一样。谢谢