首页 > 解决方案 > 如何根据条件为VBA中的excel XY散点图中的点着色?

问题描述

我正在尝试遍历具有多个系列的 xy 图表中的每个点,并根据特定的 if 条件(如果特定单元格中有值)更改颜色。

这让我发疯,因为它非常不一致(有时只是删除边界并保留填充,有时只是删除填充并保留边界)。

摘录如下。我尝试过:

'MarkerBackgroundColor = rgb(255,255,255)
'MarkerForegroundColor = rgb(255,255,255)

还尝试将其设为真然后返回假(似乎适用于.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

标签: excelvba

解决方案


好的,我“修复”了它- cht.SeriesCollection(i).Points(x).MarkerStyle = -4142(即标记类型=无)做到了。

仍然不确定为什么会发生这种情况 - 似乎Format.Fill不是很可靠。

如果有人有解释,仍然会非常感激。


推荐阅读