Отображение одного цвета в другой на листе Excel с VBA? - PullRequest
0 голосов
/ 27 февраля 2020

Я использую VBA для создания отчета в форме книги Excel. Он автоматически копирует данные из файлов CSV и заменяет существующие данные в шаблонной электронной таблице и обновляет сводные таблицы, которые все предварительно отформатированы. Для каждого продукта будет отдельный отчет, каждый из которых содержит одинаковую таблицу и диаграммы (кроме используемых данных). Разница лишь в том, что у каждой таблицы свой цвет (цветовой код продукта). Для продукта A в таблице будет использоваться синяя палитра по умолчанию, для продукта B будет использоваться оранжевая палитра et c.

. В настоящее время у меня есть две вкладки отчета, одна для продукта A и одна для продукта B. Таблицы разные цвета, но в остальном идентичны. Это работает . Тем не менее, это означает, что если изменение формата одной таблицы выполняется, пользователь должен попытаться сделать то же самое изменение в другой таблице, чтобы mimi c it.

Чего я хотел бы добиться в таблице шаблона должна быть только одна таблица синего цвета по умолчанию. Затем VBA скопирует это для каждого продукта и заменит любой из синих цветов из палитры по умолчанию на соответствующий цвет из оранжевой или зеленой палитры в зависимости от продукта. Таким образом, любые изменения в таблице нужно вносить только один раз.

Кажется, я не могу найти какую-либо информацию по этому вопросу. Другие вопросы, которые я нашел, задают о простом изменении цвета вкладки или изменении темы отдельно для каждого листа (что, я считаю, невозможно, но может быть изменено через VBA, поскольку пользователь изменяет вкладки, так что кажется, что они отформатированы по-разному). Я не собираюсь менять тему, а просто конвертировать цвета, но если вы щелкнете по раскрывающемуся окну цветов в настройках Темы и наведете курсор на разные цвета, вы заметите, что он меняет все цвета на соответствующий оттенок. в выбранном цветовом наборе. Это именно то, что я пытаюсь сделать, но изменить все, что использует данный цвет, на другой в том же наборе, не изменяя набор тем / цветов в общей книге.

Возможно ли такое?

Я пытался решить это с помощью опции Record Macro, заполняя цветом. Таблица находится в диапазоне «C3: O19». Поэтому я попытался удалить другие параметры, такие как тонировка, рисунок и т. Д. c. и просто оставил цвет темы, но он заполнил все основным цветом (что я и сделал, чтобы записать макрос в любом случае, просто чтобы найти функцию, которая изменила цвет). Примечание. Я пытаюсь изменить все цвета, использующие что-то из исходной палитры, включая границы таблицы, фон и т. Д. c. - не просто заливка цветом.

Sub Test2()
    Range("C3:O19").Select
    With Selection.Interior
        .ThemeColor = xlThemeColorAccent2
    End With
End Sub
...