我有一个电子表格,里面有很多数据,一些数据显示在气泡图中,点的大小也正确显示。
现在,我需要根据数据的状态更改颜色(和形状,但稍后再更改(,数据显示在 Z 行中,值从 1(红色(到 3(绿色(。
我的 VBA 技能现在真的很生疏,我不知道为什么下面的代码只改变第一点的颜色?
Option Explicit
Sub ColortheFingpoints()
Dim cht As Chart
Dim srs As Series
Dim pt As Point
Dim p As Long
Dim valRange As Range, cl As Range
Dim myColor As Long
Set cht = ActiveSheet.ChartObjects(1).Chart
Set srs = cht.SeriesCollection(1)
Set valRange = Range("Z8:Z10")
For p = 1 To srs.Points.Count
Set pt = srs.Points(p)
Set cl = valRange(p)
With pt.Format.Fill
.Visible = msoTrue
Select Case LCase(cl)
Case "1"
myColor = RGB(255, 0, 0)
Case "2"
myColor = RGB(255, 140, 0)
Case "3"
myColor = RGB(0, 128, 0)
End Select
.ForeColor.RGB = myColor
End With
Next
End Sub
编辑 1:
问题似乎是它只运行一次,因此只查看单元格 Z8 而不是 Z9 或以下
克里斯,尝试改变
Set cl = valRange(p)
自
Set cl = valRange.Range("A" & p)
我不知道,为什么你的代码可以工作,但这个代码应该更易于阅读。告诉我它是否有效。