VBA操作Excel图表读取序列点值触发Property let未定义错误如何解决?
问题原因
Series.Values 或 FullSeriesCollection.Values 返回的是包含当前序列所有Y值的完整数组,VBA不支持直接对该属性返回的临时数组做下标访问,直接写 Values(i) 会触发对象访问异常,也就是你遇到的报错提示。
解决代码
你只需要先将序列值读取到本地变量后再做判断即可,修正后可运行的代码如下:
Dim cht As Chart Dim seriesVals As Variant Dim i As Long ' 你的原有cht定义 Set cht = Ws.ChartObjects("Chart 5").Chart ' 一次性读取整个序列的Y值到本地数组 seriesVals = cht.FullSeriesCollection(1).Values For i = 1 To UBound(seriesVals) ' 判断数值小于0时设置柱形为红色 If seriesVals(i) < 0 Then ' 柱形填充色使用Fill.ForeColor,如果是边框色才直接用ForeColor cht.FullSeriesCollection(1).Points(i).Format.Fill.ForeColor.RGB = RGB(255, 0, 0) End If Next i
补充说明
如果你用的是Excel 2007及更早版本,把代码里的FullSeriesCollection替换为SeriesCollection即可,逻辑完全一致。
内容的提问来源于stack exchange,提问作者TourEiffel
相关产品推荐
相关产品推荐

