【问题标题】:How to use vba to change chart axes scale to linear from log when using primary and secondary y axes使用主要和次要y轴时如何使用vba将图表轴比例从日志更改为线性
【发布时间】:2019-06-14 22:39:23
【问题描述】:

我有几个宏来批处理数据和构建图表。此数据同时使用主要和次要 y 轴,有时在线性刻度或对数刻度上查看效果更好。我可以使用图表对象的“.SetElement”方法将坐标轴比例格式化为对数,如下所示:

chartSheet.SetElement (msoElementPrimaryCategoryAxisLogScale)
chartSheet.SetElement (msoElementPrimaryValueAxisLogScale)
chartSheet.SetElement (msoElementSecondaryValueAxisLogScale)

其中“chartSheet”是一个图表对象

  Dim chartSheet As Chart
  Set chartSheet = Sheets(chartExistsIdx)

这可行,但我找不到使用该方法将其设置回线性比例的枚举或值。 对于每个轴,都有选项可以将比例设置为使用单位的线性

msoElementPrimaryCategoryAxisThousands
msoElementPrimaryCategoryAxisMillions
msoElementPrimaryCategoryAxisBillions

但是,这会将轴显示单位更改为以千、百万或十亿为单位。

msoElementPrimaryCategoryAxisNone

将使轴显示=无,不将显示单位设置为无。

我还没有找到一种方法来使用这种方法直接将比例设置为线性或使用单位进行设置,然后将设置单位设置为“无”。


我尝试过的另一种方法是使用轴对象的“ScaleType”属性。 根据文档:

表达式.Axes(类型,AxisGroup)

类型可以是 xlValue、xlCategory 或 xlSeriesAxis

AxisGroup 可以是 xlPrimary 或 xlSecondary

ScaleType 可以是 xlScaleLinear 或 xlScaleLogarithmic

我试过了

chartSheet.Axes(xlCategory, xlSecondary).ScaleType = xlScaleLinear

但这会给我一个方法失败的错误。

有谁知道上述方法可能有什么问题,或者知道另一种以编程方式将辅助 Y 轴设置为具有线性比例并以正常的原生单位显示的方法?

----更新-----

我发现问题更具体到 x 轴或使用“xlCategory”。我能够让它工作并使用

设置y1和y2轴的线性比例

这行得通

chartSheet.Axes(xlValue, xlPrimary).ScaleType = xlScaleLinear
chartSheet.Axes(xlValue, xlSecondary).ScaleType = xlScaleLinear

但这不起作用

chartSheet.Axes(xlCategory, xlPrimary).ScaleType = xlScaleLinear

关于枚举的注释:“xlScaleLinear”和“xlLinear”都表示“-4132”,都适用于数值轴,但不适用于类别。

----X 轴的解决方案--------

我制定了设置显示单位的语法,所以现在可以使用这个解决方法。将刻度设置为线性,以“千”为显示单位,然后将坐标轴的显示单位属性重置为无。

chartSheet.SetElement (msoElementPrimaryCategoryAxisThousands)
chartSheet.Axes(xlCategory, xlPrimary).DisplayUnit = xlNone

【问题讨论】:

  • 这个问题我早就知道了,已经通知了微软。但就像许多其他事情一样,你有一个可以使用的解决方法是一件好事。

标签: excel vba excel-charts


【解决方案1】:

我尝试在应用对数刻度并取消设置时进行录制。 我发现 scaletype 枚举是

xlLinear

请试试这个。

【讨论】:

  • 看起来“xlLinear”和“xlScaleLinear”是可以互换的,都代表int -4132。查看我的更新,我发现是轴规范导致了问题,“xlCategory”是问题术语
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多