Страницы: 1
RSS
Пользовательская функция, изменяющая цвет ячейки
 
Здравствуйте!

Подскажите, как написать функцию, которая будет менять цвет ячейки в зависимости от текста в другой ячейке. Например в исходной ячейке задан ColorIndex, и в конечной ячейке, куда задаётся функция, необходимо изменить цвет согласно ColorIndex и записать, к примеру, шестнадцатиричное значение этого индекса.

Function ColorPaste1(Cell As Range)
Application.Volatile
ActiveCell.Interior.ColorIndex = Cell.Text
ColorPaste1 = Hex(Cell.Text)
End Function

В итоге цвет ячейки меняется, функция возвращает ошибку. Не устраивает то, что при переносе функции в другие ячейки, она автоматически не срабатывает и не меняет цвет следующей ячейки.
Конечно можно решить всё макросом, но исходная таблица постоянно меняется как в размере, так и в значениях.

Заранее спасибо!
 
Цитата
romanuil пишет:
В итоге цвет ячейки меняется
Действительно? Можете в файле показать?
Я сам - дурнее всякого примера! ...
 
Файл в приложении.
 
Ваша "проблема" решается при помощи условного форматирования.  ;)
 
А правило не подскажете?  :)
 
Вы задачу нормально сформулируйте, из #1 поста я ни чего толком не понял... ;)
 
Пожалуйста:
В ячейке А1 написано 15. Если макросом поменять цвет ячейки вот так: Range("A1" ;) .Interior.ColorIndex =15, то она станет серого цвета.
Задача: написать функцию, которая это будет делать без ошибок. То есть выполнять основную задачу функции -распространяться только на то количество ячеек, в которые она задана.

Условное форматирование не подходит, так как для каждого индекса цвета пришлось бы писать правило.
 
Такую функцию написать невозможно. Думаю настроить так УФ тоже невозможно.
А вот макрос по событию - легко... Но макрос не просили.
Изменено: Hugo - 19.06.2013 11:00:24
 
Вот здесь красили ячейки, посмотрите варианты решений.
 
romanuil, Вы думаете чего я свой вопрос задал? Формулы на листе никакого отношение к форматам не имеют. Могут только возвращать значение. Поэтому меня и напрягло Ваше:
Цитата
romanuil пишет:
В итоге цвет ячейки меняется,
Я сам - дурнее всякого примера! ...
 
Подытожу:
Получается, что функция, содержащая любую операцию не связанную с её вычислением, перестаёт работать и, как пишет Hugo, такую функцию написать невозможно.

Всем спасибо.
 
Не говорил я так!
Вот например:
Код
Function tst(r)
    tst = r * 2
    MsgBox 1
End Function

MsgBox совершенно не связан с вычислениями...
 
:D
Я сам - дурнее всякого примера! ...
Страницы: 1
Наверх