Excel это не сложно
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
05.12.2022, 13:28:30

Войти
Добавляйтесь в нашу группу ВКонтакте - будьте в курсе всех новых событий сайта, узнавайте первым обо всех акциях и новых статьях!
32 891 Сообщений в 5 363 Тем от 6 526 Пользователей
Последний пользователь: nicks28
*
Перейти на сайт Хитрости Надстройка MulTEx Обучающие тренинги Наша группа ВКонтакте
Правила форума Начало Помощь Поиск Календарь Войти Регистрация Выйти
+  Excel это не сложно
|-+  Основные форумы
| |-+  Вопросы по Excel и VBA
| | |-+  Управление градиентом графика
Страниц: [1]   Вниз
Печать
Автор Тема: Управление градиентом графика  (Прочитано 3629 раз)
0 Пользователей и 1 Гость смотрят эту тему.
A-Michael
Старожил
****

Репутация: +16/-0
Офлайн Офлайн

Сообщений: 481



Просмотр профиля E-mail
« : 24.03.2019, 13:41:45 »

Уважаемые форумчане!
Каюсь, грешен, давно не был на форуме. Вопросы не возникали к знатокам, что-то сам додумаю, что-то подсмотрю в Тырнете...
Но вот столкнулся с проблемой, которую не могу разрешить: управление цветовым градиентом на графике через VBA. График рисуется отменно, градиент вручную - без проблем. Попытался записать макрос, но дальше выбора линии ничего не пишет. Ну, то есть, выбираю "Формат ряда данных" и уже ничего в макросе на эту тему не вижу.
Может кто сталкивался с этой проблемой? Меня в частности интересует как программно изменять проценты положения точки (на фрагменте во вложении выделен красной рамкой) и возможно ли это вообще?
Заранее спасибо всем откликнувшимся.
PS. Вопрос не то чтобы принципиальный, но было бы неплохо решить его...
Записан

Я - не волшебник, я ещё только учусь...
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +481/-0
Офлайн Офлайн

Сообщений: 5 717



Просмотр профиля WWW
« Ответ #1 : 24.03.2019, 15:34:31 »

Что-то вроде:
Код: (vb)
    With ActiveSheet.ChartObjects("ChartName").FullSeriesCollection(1).Format.Fill
        .Visible = msoTrue
        .ForeColor.ObjectThemeColor = msoThemeColorAccent1
        .ForeColor.TintAndShade = 0
        .ForeColor.Brightness = 0.9
        .BackColor.ObjectThemeColor = msoThemeColorAccent1
        .BackColor.TintAndShade = 0
        .BackColor.Brightness = 0.7
        .TwoColorGradient msoGradientHorizontal, 1
    End With
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
A-Michael
Старожил
****

Репутация: +16/-0
Офлайн Офлайн

Сообщений: 481



Просмотр профиля E-mail
« Ответ #2 : 24.03.2019, 18:25:15 »

Что-то подобное мне встречалось, но есть "маленькое" отличие: приведённый пример для 2-х цветного градиента, а у меня, эта зараза 3-х цветная... И вот 2-й цвет нужно сдвигать то в одну, то в другую сторону, а 1-й и 3-й как раз таки фиксированные.
".TwoColorGradient" - стандартное решение для двухцветного градиента, есть ещё ".OneColorGradient" для одноцветного, но для 3-х и более цветов ничего не нашёл.
« Последнее редактирование: 24.03.2019, 18:28:04 от A-Michael » Записан

Я - не волшебник, я ещё только учусь...
A-Michael
Старожил
****

Репутация: +16/-0
Офлайн Офлайн

Сообщений: 481



Просмотр профиля E-mail
« Ответ #3 : 25.03.2019, 08:11:51 »

Так, упростим задачу, уберём 3-й цвет, оставим только два, но суть остаётся неизменной, нужно изменить положение точки градиента (?). См. вложения. Так как имеются известные ограничения на объём вложения придётся прикреплять в отдельных сообщениях.
Заранее спасибо всем откликнувшимся.
Записан

Я - не волшебник, я ещё только учусь...
A-Michael
Старожил
****

Репутация: +16/-0
Офлайн Офлайн

Сообщений: 481



Просмотр профиля E-mail
« Ответ #4 : 25.03.2019, 08:12:34 »

Вложение 2
Записан

Я - не волшебник, я ещё только учусь...
A-Michael
Старожил
****

Репутация: +16/-0
Офлайн Офлайн

Сообщений: 481



Просмотр профиля E-mail
« Ответ #5 : 25.03.2019, 08:12:57 »

Вложение 3
Записан

Я - не волшебник, я ещё только учусь...
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +481/-0
Офлайн Офлайн

Сообщений: 5 717



Просмотр профиля WWW
« Ответ #6 : 25.03.2019, 08:39:02 »

А Вы реально думаете, что сейчас все кинутся изобретать данные под Вашу диаграмму, чтобы предложить решение? Вроде не первый день на форуме и давно пора бы понять, что ничто так не ускоряет получение помощи, как пример в файле Excel.
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
A-Michael
Старожил
****

Репутация: +16/-0
Офлайн Офлайн

Сообщений: 481



Просмотр профиля E-mail
« Ответ #7 : 25.03.2019, 14:22:49 »

Да суть-то не в данных, а в том, как задать положение точки перехода цвета в градиенте. Ведь наверняка кто-то сталкивался с подобной задачей...
Файл слишком велик, поэтому выложу только диаграмму с данными.
Вот, на листе Тнв 3 графика.
На первом Точка 1 - 0%, Точка 2 - 100% (исходное состояние при построении графика).
На втором Точка 1 - 50%, Точка 2 - 100% (ПОКРАСНЕНИЕ).
На первом Точка 1 - 0%, Точка 2 - 50% (ПОСИНЕНИЕ).
Визуально видно (надеюсь) как изменяется градиент в сторону "ПОКРАСНЕНИЯ" или "ПОСИНЕНИЯ" в зависимости от положения точки. Я хотел бы добиться такого сдвига средствами VBA, если это, конечно, возможно.
Записан

Я - не волшебник, я ещё только учусь...
A-Michael
Старожил
****

Репутация: +16/-0
Офлайн Офлайн

Сообщений: 481



Просмотр профиля E-mail
« Ответ #8 : 07.04.2019, 07:52:16 »

Жаль, что нет такой возможности, а задумка была интересная...
Записан

Я - не волшебник, я ещё только учусь...
Страниц: [1]   Вверх
Печать
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2011, Simple Machines Valid XHTML 1.0! Valid CSS!
Яндекс.Метрика Рейтинг@Mail.ru