Здравствуйте. Нужно реализовать макрос, который заливает цветом предварительно выделенные ячейки (ячейку) и который срабатывает по выделению определённой ячейки. В прикреплённом файле макрос заливает цветом ту ячейку, по выделению которой он срабатывает (А1). То есть нужно как-то запомнить предварительно выделенный диапазон и уже к нему применить форматирование. Возможно ли это? Тогда, наверное, макрос должен начинать работу ещё при выделении диапазона ячеек?
Макрос форматирования предварительно выделенного диапазона ячеек
16.07.2015 13:10:32
|
|
|
|
16.07.2015 13:13:28
да, вы абсолютно правы, нужно где-то сохранять адрес выделения и при выборе указанной ячейки работать именно с записью
Живи и дай жить..
|
|
|
|
16.07.2015 22:00:10
А не проще будет заливать цветом выделенные ячейки не по выделению ячейки, а по другому действию?
Неизлечимых болезней нет, есть неизлечимые люди.
|
|
|
|
22.07.2015 23:22:38
Спасибо, SAS888, это то, что нужно!
|
|||
|
|
25.07.2015 10:44:57
Уважаемые знатоки Excel, подскажите, пожалуйста, ещё один момент: Ячеек, управляющих заливкой диапазонов несколько (одна заливает одним цветом, вторая - другим, третья - убирает заливку). Проблема в том, что "управляющие" ячейки заливают друг друга. Чего быть не должно. То есть в макросе нужно добавить строку "Если выделенная ячейка принадлежит столбцу А (или выделенный диапазон содержит столбец А), то макрос срабатывать не должен". Как реализовать это условие?
|
|
|
|
25.07.2015 10:58:49
Изменено:
Согласие есть продукт при полном непротивлении сторон
|
|||
|
|
26.07.2015 10:57:11
Sanja, огромное Вам спасибо! В Вашем примере все "ячейки-кнопки" отрабатывают своё действие по 1 разу с предварительно выделенным диапазоном не форматируя друг друга. А можно ли сделать работу "ячеек-кнопок" с предварительно выделенным диапазоном многократной? То есть предварительно выделенный диапазон после срабатывания макроса снова должен выделяться. Это было бы лучше и с точки зрения наглядности - видно какой диапазон будет сейчас отформатирован.
|
|
|
|
26.07.2015 11:06:00
Изменено:
Согласие есть продукт при полном непротивлении сторон
|
|||
|
|
27.07.2015 11:58:22
Sanja, реализовал Ваше решение. Ещё до удаления "лучшего" файла пробовал реализовать и его - код не срабатывает. Хотя, конечно, он лучше подойдёт для большого количества "ячеек-кнопок" (у меня их 6). И ещё один важный для меня момент: макрос не работает, если включена защита листа (с возможностью выделения ячеек). Дело в том, что в форматируемых ячейках будут находиться формулы, поэтому их защита от изменений должна быть однозначно. Возможно ли заставить работать макрос при включенной защите?
|
|
|
|
27.07.2015 12:15:36
Пароль на лист - 123
Согласие есть продукт при полном непротивлении сторон
|
|
|
|
27.07.2015 22:02:47
|
|||
|
|
29.07.2015 07:47:38
Извините, конечно моё упоминание о запуске макроса при включенной защите листа не входит в рассматриваемую тему. Нужно было сначала поискать. Как-то "на автомате" получилось - уж очень шокировало не срабатывание кода при включенной защите ("Как, и это всё напрасно???"). Ещё раз приношу извинения...
Изменено: |
|
|
|
29.07.2015 08:19:17
Sanja, ещё раз выражаю Вам свою благодарность за помощь в решении этой задачи. В принципе это решение вполне удовлетворяет. Но поскольку предела совершенству нет, наберусь ещё наглости и попрошу посмотреть прилагаемый файл. Рабочие зоны предназначенные для форматирования - это области где находится календарь, заливку дней которого нужно производить. Между этими зонами (строки между группами месяцев календаря) ячейки заливать не нужно (то есть пользователю должны быть предоставлены для форматирования только определённые области листа). Пытался решить такую задачу указывая в параметрах Intersect наряду с Columns ещё и Rows, однако это не проходит (не действует "защита" даже столбца). Удаётся защитить от форматирования диапазон, указав в параметрах Intersect Range(Cells(х1, y1), Cells(x2, y2)). Но таким образом защищается от форматирования только одна область, указание в параметрах Intersect нескольких областей (Intersect(..., Range(Cells(х1, y1), Cells(x2, y2)), Range(Cells(х3, y3), Cells(x4, y4)))) тоже не проходит, также не работает "защита" ни одной зоны. Подозреваю, что я неправильно понимаю смысл строки, где указываются "защищаемые" области и указание нескольких параметров является взаимоисключающим. Если предложенная структура листа не окажется чрезвычайно трудоёмкой для решения и у Вас будет возможность помочь в её реализации - буду Вам очень признателен! С уважением, Юрий Чиркин.
Изменено: |
|
|
|
29.07.2015 09:39:59
1. Вопрос не по теме. Защита - это не форматирование.
2. Наглость - второе счастье? Может, имеет смысл разместить задачу в платном разделе или связаться в личке? Сможете отблагодарить Sanja не только словесно. |
|
|
|
30.07.2015 14:18:33
Договорились разместить решение на форуме
Согласие есть продукт при полном непротивлении сторон
|
||||
|
|
|||