我尝试使用多个序列遍历xy图表中的每个点,并基于特定的if条件(如果特定单元格中有值)更改颜色。
这让我抓狂,因为它非常不一致(有时只是删除边框和填充保留,有时只是删除填充和边框保留)。
摘录如下。我已经尝试过了:
'MarkerBackgroundColor = rgb(255,255,255)
'MarkerForegroundColor = rgb(255,255,255)
我也尝试过将其设置为true,然后返回为false (似乎适用于.line...)仅供参考- If
条件起作用了,我已经用msgbox测试过了,它是在正确的时间触发的(如果你关心的话-它从第3行开始读取空白单元格值,从第7列开始,每次迭代i都会跳过4列)。
代码如下:
Dim ws as Worksheet
Dim cht as Chart
set ws = Worksheets("Sheet 1")
Set cht = ws.ChartObjects("Chart_Name")
For i = 2 To 8
For x = 1 To cht.SeriesCollection(i).Points.Count
If ws.Cells(x + 2, i + 5 + (3 * (i - 2))).Value = "" Or ws.Cells(x + 2, i + 5 + (3 * (i - 2))).Value = " " Then
With cht.SeriesCollection(i).Points(x)
.Format.Fill.ForeColor = rgb(255, 255, 255)
.Format.Line.Visible = msoFalse
End With
Else
End If
Next x
Next i
发布于 2019-04-30 10:00:55
好吧,我“修复”了它- cht.SeriesCollection(i).Points(x).MarkerStyle = -4142
(即标记类型= none)做到了这一点。
仍然不确定为什么会发生这种情况--似乎Format.Fill
并不是很可靠。
如果有人有一个解释,将仍然非常感谢。
https://stackoverflow.com/questions/55902253
复制相似问题