Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 28.11.2008, 18:55   #1
Acro
Пользователь
 
Регистрация: 21.10.2008
Сообщений: 39
По умолчанию Условное форматирование средствами VBA

Код:
Sub Color_PAmp()
Set PAmpRange = Range("E2:E28")

For Each cell In PAmpRange
Select Case cell.Value
    Case "G0K"
        cell.Interior.ColorIndex = 50
    Case "L0D", "C0D", "R0D"
        cell.Interior.ColorIndex = 39
    Case "L0M", "C0M", "R0M"
        cell.Interior.ColorIndex = 36
    Case "F0W"
        cell.Interior.ColorIndex = 37
End Select
Next cell
End Sub
Вот так я смог закрасить диапазон исходя из одного параметра, который содержится в самой ячейку.
Дальше пошло усложнение. Надо окрашивать ячейку в зависимости от значения 2-х неких ячеек, по вертикали и горизонтали. Но в процессе не получается окрасить ячейку даже исходя из одного параметра находящегося в другой ячейке по горизонтали:

Код:
Sub Color_S()
Set SkillRange = Range("V2:AS28")

For Each cell In SkillRange
Select Case cell(E & cell.Row).Value
    Case "L0D", "C0D", "R0D"
        cell.Interior.ColorIndex = 1
    Case "L0M", "C0M", "R0M"
        cell.Interior.ColorIndex = 2
End Select
Next cell
End Sub
И компилятор не ругается и результата - ноль. Не выходит потому что не понимает какую ячейку красить "Each cell In SkillRange" или "cell(E & cell.Row)"?
Изображения
Тип файла: jpg 01.JPG (10.3 Кб, 191 просмотров)
Acro вне форума
Старый 28.11.2008, 19:16   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Попробуйте такой вариант:

Код:
Sub Color_S()
    Set SkillRange = Range("V2:AS28"): Dim cell As Range

    For Each cell In SkillRange
        With cell
            Select Case Range("E" & .Row).Value
                Case "L0D", "C0D", "R0D": .Interior.ColorIndex = 1
                Case "L0M", "C0M", "R0M": .Interior.ColorIndex = 2
                Case Else: .Interior.ColorIndex = 4 ' для проверки
            End Select
        End With
    Next cell
End Sub
Или, что то же самое:
Код:
Sub Color_S2()
    Application.ScreenUpdating = False
    Set SkillRange = Range("V2:AS28"): Dim cell As Range

    For Each cell In SkillRange
        With cell
            Select Case .EntireRow.Cells(5).Value ' значение в 5-м столбце той же строки
                Case "L0D", "C0D", "R0D": .Interior.ColorIndex = 1
                Case "L0M", "C0M", "R0M": .Interior.ColorIndex = 2
                Case Else: .Interior.ColorIndex = 5    ' для проверки
            End Select
        End With
    Next cell
End Sub
А если Вы опишите условия, на основании которых должны окрашиваться ячейки,
то можно будет уже переделать этот код, исходя из Ваших требований.

Сейчас каждая из ячеек диапазона SkillRange окрашивается только в зависимости от значения, находящегося в столбце Е той же строки.

Из какой строки должно браться значение для второго условия?

Последний раз редактировалось EducatedFool; 28.11.2008 в 19:20.
EducatedFool вне форума
Старый 29.11.2008, 00:01   #3
Acro
Пользователь
 
Регистрация: 21.10.2008
Сообщений: 39
По умолчанию

Работает на ура, переделал свой Color_PAmp() из первого поста по аналогии с вашим решением.
Что касается второго условия, то по обьему вариантов (24) оно наверное должно быть первым по счету. Если можете укажите хотя бы направление в котором стоит искать решение.
Вложения
Тип файла: rar vba_format.rar (8.0 Кб, 64 просмотров)
Acro вне форума
Старый 29.11.2008, 00:24   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Можно сделать и с двумя условиями, но код получится трудночитаемый.
Да и редактировать его в случае необходимости будет сложновато.

Не проще ли сделать дополнительный лист (возможно, скрытый),
в котором будут все возможные столбцы и все возможные строки
(имеются ввиду все возможные наименования строк и столбцов)
и все ячейки в этой таблице будут заранее разукрашены в нужные цвета.
(примерно так, как Вы их разукрасили для образца в диапазоне [a12:y15])

А потом макрос будет считывать с этого скрытого листа цвет ячейки на пересечении нужной строки и нужного столбца, и красить ячейки в соответствующий цвет.

Так получится проще, да и редактировать цветовую гамму будет намного легче.
EducatedFool вне форума
Старый 29.11.2008, 15:29   #5
Acro
Пользователь
 
Регистрация: 21.10.2008
Сообщений: 39
По умолчанию

Блин, решение с использованием шаблона - это гениально! Вот что значит опыт.
Acro вне форума
Старый 01.12.2008, 16:40   #6
Acro
Пользователь
 
Регистрация: 21.10.2008
Сообщений: 39
По умолчанию

Застрял на "диапазон относительно ячейки"
Диапазон лежит справа от ячейки RC[17]:RC[40]



Выбор ячеек и диапазонов ячеек в Excel с помощью процедур Visual Basic, как то не могу адаптировать изложенное.

Последний раз редактировалось Acro; 01.12.2008 в 17:01.
Acro вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Условное форматирование по параметрам snakezx Microsoft Office Excel 2 13.11.2008 16:46
Условное форматирование ZORRO2005 Microsoft Office Excel 6 29.09.2008 16:46
Условное форматирование ячеек. *Иван* Microsoft Office Excel 2 24.11.2007 13:49
Условное форматирование Asu Microsoft Office Excel 2 18.10.2007 10:14
Условное форматирование + размер ячеек. Hellen Microsoft Office Excel 5 07.01.2007 20:49