如何使用VBA自动缩放绘图的x轴?

时间:2015-10-08 12:26:15

标签: excel-vba axis vba excel

我试图在Excel中自动缩放绘图,遗憾的是,我只是设法缩放Y轴,因为我在设置X轴的最大值时出错:

  

运行时错误' -2147467259(80004005)':

     

方法' MaximumScale'对象' Axis'失败

我有这个代码来帮助我扩展我的情节:

Option Explicit

Sub AutoScaleAxe()

    With ActiveChart.Axes(xlValue, xlPrimary)
        .MaximumScale = ActiveSheet.Range("E26").Value
        .MinimumScale = ActiveSheet.Range("E25").Value
        .MajorUnit = ActiveSheet.Range("E27").Value
    End With

    With ActiveChart.Axes(xlCategory, xlPrimary)
        'The following line raises an error
        .MaximumScale = ActiveSheet.Range("E22").Value
        .MinimumScale = ActiveSheet.Range("E21").Value
        .MajorUnit = ActiveSheet.Range("E23").Value
    End With
End Sub

以下是我用来缩放图表的单元格:

Cells used to scale the plot

2 个答案:

答案 0 :(得分:0)

如果图表类型具有数字水平轴,则代码可以正常工作 - 例如散点图 - 但如果水平轴是分类的,则不行。

如果您想使用分类类型(如柱形图)显示直方图,则需要:

  1. 设置具有固定数量的数据点(即固定数量的箱)的图表,并重新计算实际数据点(箱值),因为所需的轴min和max被更改,或
  2. 计算跨越您想要覆盖的最小轴min到max的数据点,并更改图表系列数据源范围,例如: ActiveChart.SeriesCollection(1).Values = myrange

答案 1 :(得分:0)

正如this帖子所解释的那样,您不能使用具有分类X轴的图表的MinimumScale,MaximumScale。

唯一可用的是TickLabelSpacing和TickMarkSpacing。或者,正如@nekomatic所解释的那样,你应该使用数字X轴。