Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование, связанное с MS Office > Присвоить значение ячейки в зависимости от цвета


Автор: fraise 26.4.2009, 21:23
Здравствуйте,
подскажите, пожалуйста, как присвоить значение ячейки в зависимости от цвета.
Заранее спасибо.

Автор: masterofmind 27.4.2009, 00:36
хммм, обычно хотят наоборот. ;) Если так - тебе нужно условное форматирование, иначе :

Код

Public Function ОпределитьЗначениеОтЦвета (Диапазон as Range, цвет as Integer) As '[тут пишешь тип данных которые нужно присвоить]

Application.violate true

dim Ячейка as Range

for each ячейка in Диапазон

if ячейка.Interior.Color=цвет then ОпределитьЗначениеОтЦвета = '[твое значение]

next

' Лучше всего создай здесь блок  CASE со значениями
End Function




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

Автор: fraise 27.4.2009, 00:56
Дело в том, что я совсем не представляю процесс "жесткого ссылания". 
Подскажи, пожалуйста, как это сделать.

Автор: masterofmind 27.4.2009, 01:10
Оххохо...ты бы формализовал задачу, а?  smile 

Я бы сделал так: 
1. Создал новый лист, в котором в две колонки указал цвет и значение. Что-то вроде такого: Выделили А1 красным, а в В1 написал бы текст "плохо",  А2 желтым, а в В2 текст "Уже лучше" и т. д.  Тогда функция примет вид:

Код

Public Function ОпределитьЗначениеОтЦвета (Ячейка as Range, Цвет as Range, значение as Range) As Variant
Application.violate true
if ячейка.Interior.Color=цвет.interior.Color then ОпределитьЗначениеОтЦвета = значение.value
end function


Итого пишешь в нужную ячейку : =ОпределитьЗначениеОтЦвета([Ячейка которая будет сравниваться], $A$1,$B$1). и протягиваешь.
Знак $ задает абсолютну ссылку, т.е. при протягивании адреса ячеек не изменяться. В итоге получишь  значение "плохо" для всех красных ячеек.



Автор: fraise 27.4.2009, 21:06
Спасибо, все работает!!!
На другом сайте, мне помогли найти беспрограммное решение моей проблемы smile
Думаю, что могу выложить его и тут.

"Можно это сделать и не программно. Нажмите CTRL+H, далее кнопку Параметры. В строке Найти ничего не указывайте, нажмите Формат и на вкладке Вид выберите цвет ячеек, в которые вы хотите добавить значения. В строке Заменить на просто укажите значение, которое вы хотите вставить. Нажимаете Заменить все и Готово."

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)