Как раскрасить точки в точечных диаграммах Excel XY в VBA в зависимости от условия? - PullRequest
1 голос
/ 29 апреля 2019

Я пытаюсь пройти каждую точку на xy-диаграмме с несколькими сериями и изменить цвет в зависимости от конкретного условия if (если в определенной ячейке есть значение).

Это сводит меня с ума, потому что это очень противоречиво (иногда просто удаляет границы и остаются заполнители, иногда просто удаляет заливку и остаются границы).

Выписка ниже. Я пробовал с:

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

Также попытался сделать это правдой, а затем вернуться к ложному (кажется, работает для .line ...) К вашему сведению - условие If работает, я проверил с помощью msgbox и оно запускается в правильное время (в случае, если вам это нужно - он читает пустые значения ячеек, начиная с строки 3, и переходит на 4 столбца при каждой итерации i, начиная с столбца. 7).

Код ниже:

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

1 Ответ

0 голосов
/ 30 апреля 2019

Хорошо, я "исправил" это - cht.SeriesCollection(i).Points(x).MarkerStyle = -4142 (то есть тип маркера = нет) сделал это.

Все еще не уверен, почему это произошло - кажется, Format.Fill не очень надежно.

Если у кого-то есть объяснение, все равно будет высоко ценится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...