首页 文章

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

提问于
浏览
1

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

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

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

ActiveChart.PlotArea.Top

如果您没有't touched the chart, this should return a value of 7. Now use one of the chart'的把手垂直调整图表大小,并再次使用相同的命令行 .

activechart.plotarea.top

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

ActiveChart.PlotArea.Top = 7

再次, grab 其中一个把手,垂直调整图表大小并再次使用以下内容获取.top属性:

ActiveChart.PlotArea.Top

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

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

ActiveChart.SetElement msoElementPlotAreaNone
ActiveChart.SetElement msoElementPlotAreaShow

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

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

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

文森特

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
    

    参考

相关问题