1

我正在寻找一种方法来恢复 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?

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

文森特

4

1 回答 1

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

参考

于 2016-05-02T17:59:07.900 回答