根据不同列中的值在excel中更改气泡图的颜色和形状
我有一个电子表格,里面有很多数据,一些数据显示在气泡图中,点的大小也正确显示 现在,我需要根据数据的状态更改颜色(和形状,但稍后会更改),数据显示在Z行,值从1(红色)到3(绿色) 我的VBA技能现在已经很生疏了,我不明白为什么下面的代码只会改变第一点的颜色根据不同列中的值在excel中更改气泡图的颜色和形状,excel,vba,colors,bubble-chart,Excel,Vba,Colors,Bubble Chart,我有一个电子表格,里面有很多数据,一些数据显示在气泡图中,点的大小也正确显示 现在,我需要根据数据的状态更改颜色(和形状,但稍后会更改),数据显示在Z行,值从1(红色)到3(绿色) 我的VBA技能现在已经很生疏了,我不明白为什么下面的代码只会改变第一点的颜色 Option Explicit Sub ColortheFingpoints() Dim cht As Chart Dim srs As Series Dim pt As Point Dim p As Lon
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)
到
我不知道,为什么你的代码是工作的,但这一个应该是更人性化的可读性。告诉我它是否有效 它对我有用。尝试在设置cl=后添加调试。打印cl.地址和“”&cl,并检查立即窗口。这对我来说很好。你所有的数字都是1、2还是3?如果没有,则颜色不会改变是的,如果我改变第一个单元格中的数字,我可以看到变化,但不管我在下面的单元格中放了什么,它总是会改变第一个。@MarcinSzaleniec输出只是显示“$Z$8 2$Z$8 2$Z$8 2$Z$8 2”仍然给我相同的错误,它正确读取了Z8的值,但是Z9的值。“下一个”部分能被意图否定吗?压痕是为我们,凡人准备的。但是,为了清晰起见,您应该键入Next p。在上面的评论中,你说它总是读Z8,而不是Z9。也许试着检查你的电子表格,如果Z8之后没有隐藏行,或者像我说的那样,你的宏在我的计算机上是正常的。没有隐藏行或任何东西,但是如果我强制代码读取“Z9”,它会覆盖第8行点的颜色?这绝对不是我想要的。谢谢你的时间!
Set cl = valRange.Range("A" & p)