Ряд данных диаграммы неправильно отформатирован - PullRequest
0 голосов
/ 18 марта 2019

У меня следующая ситуация: У меня есть диаграмма, основанная на сводной таблице (сводная диаграмма). Если существуют определенные условия, мой существующий макрос меняет цвет фона ряда данных с «Автоматически» на «Узор заливки» (точечный фон). Это отлично работает, макрос выглядит так:

ActiveSheet.ChartObjects("Diagramm 1").Activate
ActiveChart.FullSeriesCollection(31).Select

With Selection.Format.Fill
    .Visible = msoTrue
    .Patterned msoPattern10Percent
    .ForeColor.RGB = RGB(255, 255, 255)
    .BackColor.RGB = RGB(135, 206, 235)

End With

Однако, если условия изменяются, цвет фона должен быть установлен обратно на «Автоматический» с помощью макроса. Я попытался записать это, используя макрос записи, и результат выглядит так:

ActiveSheet.ChartObjects("Diagramm 1").Activate
ActiveChart.FullSeriesCollection(31).Select

Selection.Format.Fill
.Visible = msoTrue

Проблема в том, что после выполнения ничего не меняется - поэтому фон остается пунктирным. Кто-нибудь знает, как установить цвет фона обратно на «Автоматический» с помощью макроса? Возможно использование атрибута .Patterned?

1 Ответ

2 голосов
/ 18 марта 2019

Когда вы выполняли запись, не было настройки под Pattern Fill для Автоматически или даже для Нет.

Чтобы переключиться с паттерна на эквивалент автоматического, вам нужно установить несколько настроек; в частности, .Solid отключает паттерн.

With Selection.Format.Fill
    .Visible = msoTrue
    .Transparency = 0
    .Solid
    .ForeColor.RGB = RGB(255, 255, 255)
End With

Вы должны установить для ForeColor значение, которое вы считаете автоматическим . (Вы также можете установить некоторый BackColor, возможно, в зависимости от типа диаграммы и от того, хотите ли вы градиент.)

Я полагаю, что другой подход заключается в использовании того же Fore и BackColor для получения сплошного паттерна.


При просмотре параметров заливки есть опция Automatic, которую нужно щелкнуть, но вам все равно нужно выбрать цвет; он генерирует код, эквивалентный указанному выше (если вы не выберете цвет темы).


Из этого аналогичного вопроса вы можете использовать устаревший, но все еще работающий синтаксис Excel 2003 для применения xlAutomatic:

ActiveChart.FullSeriesCollection(1).Interior.ColorIndex = xlAutomatic

(Лично я бы предпочел явно указать «значения по умолчанию» или цвета темы.)

...