【问题标题】:How auto scale the x-axis of a plot using VBA?如何使用 VBA 自动缩放绘图的 x 轴?
【发布时间】:2015-12-03 16:13:15
【问题描述】:

我正在尝试在 Excel 中自动缩放绘图,不幸的是,我只能缩放 Y 轴,因为在设置 X 轴的最大值时出现错误:

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

对象“Axis”的方法“MaximumScale”失败

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

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

这是我用来缩放绘图的单元格:

【问题讨论】:

  • 是什么样的图表?
  • 如果我在折线图上尝试您的代码,我会得到同样的错误,但它在散点图上可以正常工作。我怀疑您的图表类型没有MaximumScale 属性。
  • 我的目标是显示正态分布,因此我选择使用直方图。

标签: excel axis vba


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-27
      • 2014-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多