Добрый день уважаемые форумчане, такой вопрос, а можно ли средствами VBA, добавить в стандартную палитру в блок "Последние цвета", свой собственный цвет ?
Данное действо необходимо для того, чтобы пользователь через надстройку "добавлял" данные цвета и потом использовал именно их для заливки ячеек. После чего при помощи функции происходил подсчет суммы по цвету ячеек
pinguindell написал: Может кто-то задавался уже подобным вопросом ?
Вашими молитвами, задаюсь этим вопросом уже несколько часов. Решения не нашёл, нашёл несколько тупиковых для меня направлений: 1. Мне тоже не нравится предложенный метод. Нашёл, как вызвать окно выбора цвета не хоткеями, а напрямую, но не знаю, что с ним потом делать, так как оно модальное и макрос ждёт его закрытия.
Код
Application.Dialogs(xlDialogEditColor).Show 40, R, G, B
Число 40, это код цвета, который выбирается по умолчанию при открытии диалогового окна (1-56), не используется, если указаны значения R, G, B. 2. Вот эти цвета (1-56) можно тоже все поменять со стандартных, но они на менюшки никак не влияют, похоже(((
Код
ThisWorkbook.Colors(i) = 66666
3. Условно "рабочий" вариант - можно поменять не недавние цвета, а цвета в теме:
Код
ThisWorkbook.Theme.ThemeColorScheme.Colors(1-12).rgb = нужный цвет
4. Нашёл ID пунктов меню с цветом, но не нашёл, как изменить их свойства. Наверное, вообще нельзя((
Код
CommandBars.FindControls(ID:=1691)(1) 'Цвет &заливки
CommandBars.FindControls(ID:=1457)(1) 'Последние использованные цвета
Мало ли. Может что-нить натолкнёт на нужную мысль. Просто SendKeys это как-то не очень ИМХО.
Wiss,спасибо ! Обязательно ознакомлюсь и проверю на рабочем примере . Нашёл альтернативное , подходящее для меня решение , в поредение выложу рабочие файлы .
pinguindell написал: Решение на базе решения ikki, в теме
Да, забавно. Теперь я знаю, как отслеживать изменения цвета (которое отследить нельзя:)) Осталось только дать возможность пользователям выбирать те самые цвета, которые "можно". И вот тут-то можно использовать мой пункт 3 (изменение цветов в текущей теме книги) + пункт 2 (частично используется ikki) нет - проверил на практике - colorIndex работает неожиданно (всегда что-то выдаёт, так что сделал всё сразу на color).
В приложении решение, вдохновлённое ikki, с возможностью задать в книге до 10 цветов для раскраски и заливкой всего кривого vbMagneta. Диапазон проверки можно задать параметром.