首页 > 解决方案 > 在 Excel (VBA) 中仅选择 X 误差线

问题描述

我正在尝试在 VBA for Excel 中格式化错误栏。当我录制宏并单击错误栏时,我将其作为输出:

ActiveChart.FullSeriesCollection(8).ErrorBars.Select

事情是,当我需要 X 误差条时,它默认为 Y 误差条。这是可行的吗?

标签: excelvba

解决方案


这是 VBA 对象模型中的一个严重弱点。X 和 Y 误差条不能使用ChartFormat语法单独选择或单独格式化。如果您使用ChartFormat语法来格式化ErrorBars,例如

ActiveChart.SeriesCollection(1).ErrorBars.Format.Line.ForeColor.RGB = RGB(255, 0, 0)

你只会格式化水平误差线(见下面的注释)。

您可以使用一些古老的 Excel 4 宏 (XLM) 来解决 VBA 选择问题:

ExecuteExcel4Macro ("Select(""S1EX"")") ' Select series 1 X error bars

ExecuteExcel4Macro ("Select(""S1EY"")") ' Select series 1 Y error bars

啊哈!所以选择 X 错误栏,并对其进行格式化:

Selection.ErrorBars.Format.Line.ForeColor.RGB = RGB(255, 0, 0)

伟大的!现在选择 Y 误差条并重复。但是 Y 误差条没有改变。事实上,如果你按照相反的顺序进行操作,首先选择 Y 误差线,尽管选择了 Y 误差线,上述行仍将格式化 X 误差线(另请参阅下面的注释)。

注意- 我说代码只格式化 X 误差线而不是 Y 误差线。它真正格式化的是添加到图表中的第一组误差线,我在 Y 之前添加了 X。当我反转这个并在 X 之前添加 Y 时,只是第一个误差线被格式化,这次是 Y .

解决方法 1

将 X 误差线添加到系列中,并对其进行格式化。然后复制该系列,但如果需要将其隐藏,并将 Y 误差线添加到该系列并以不同的格式设置它们。

解决方法 2

X 和 Y 误差线的格式相同,使用旧Border语法:

ActiveChart.SeriesCollection(1).ErrorBars.Border.Color = RGB(255, 0, 0)

这对于线条颜色是可以的,但其他线条格式不太灵活。例如,对于线宽,您必须在xlHairlinexlThinxlMedium和中进行选择xlThick


推荐阅读