2015-08-20 6 views
0

Я работаю над макросом, который заполняет определенные ячейки цветами, основанными на выпадающих значениях. При выборе значения и при его замене он не удаляет предыдущие цвета, которые были заполнены последним в зависимости от его значения. Макрос работает на частном компьютере при изменении рабочего листа. Это, в свою очередь, проверяет значение ячейки и заполняет поля цветами. Будет ли частная подзадача использовать, когда что-то изменится, чтобы сбросить активную строку? Вот макрос код цвета в полях:VBA Замените цвет, зависящий от значения drop down

Sub Validate() 


Dim rng As Range 
Dim row As Range 
Dim cell As Range 
Dim counter As Long 
Dim clrGrren As Long 
Dim clrWhite As Long 
clrGreen = RGB(Red:=180, Green:=236, Blue:=180) 
clrWhite = RGB(Red:=255, Green:=255, Blue:=255) 

Set rng = Range("D4:D1000") 



For Each cell In rng 


Select Case cell.Value 

Case Is = "Action Figures" 
    cell.Offset(counter, 12).Interior.Color = clrGreen 
    cell.Offset(counter, 13).Interior.Color = clrGreen 
    cell.Offset(counter, 21).Interior.Color = clrGreen 
    cell.Offset(counter, 22).Interior.Color = clrGreen 
    cell.Offset(counter, 23).Interior.Color = clrGreen 
    cell.Offset(counter, 29).Interior.ColorIndex = 16 
    cell.Offset(counter, 30).Interior.ColorIndex = 16 
    cell.Offset(counter, 31).Interior.Color = clrGreen 
    cell.Offset(counter, 32).Interior.Color = clrGreen 
    cell.Offset(counter, 34).Interior.ColorIndex = 16 
    cell.Offset(counter, 35).Interior.Color = clrGreen 
    cell.Offset(counter, 38).Interior.ColorIndex = 16 
    cell.Offset(counter, 39).Interior.ColorIndex = 16 
    cell.Offset(counter, 41).Interior.ColorIndex = 16 
    cell.Offset(counter, 42).Interior.ColorIndex = 16 
    cell.Offset(counter, 43).Interior.ColorIndex = 16 
    cell.Offset(counter, 44).Interior.ColorIndex = 16 
+0

Является ли код полным? Я не вижу «End Sub». Пожалуйста, предоставьте весь «под». –

+0

Вся часть составляет около 1000 строк. Код повторяется для различных сценариев так что в конце переводника закрывается вместе с: End Select Следующая End Sub – Nathan

+0

ли работа решение? –

ответ

0

Вы должны включить код, который проверяет значение ячейки и обновляет соответствующий цвет ячейки в Private Sub Worksheet_Change() вместо того, чтобы определенный пользователем sub. Сохраните лист, а затем попробуйте обновить значения. Цвет целевых ячеек изменится автоматически.

Dim rng As Range 
Dim row As Range 
Dim cell As Range 
Dim counter As Long 
Dim clrGreen As Long 
Dim clrWhite As Long 
Dim clrBlue As Long 

    Private Sub Worksheet_Change(ByVal cell As Range) 
    clrGreen = RGB(Red:=180, Green:=236, Blue:=180) 
    clrWhite = RGB(Red:=255, Green:=255, Blue:=255) 
    clrBlue = RGB(Red:=0, Green:=0, Blue:=255) 

    Select Case cell.Value 

    Case Is = "Action Figures" 
     cell.Offset(counter, 12).Interior.Color = clrGreen 
     cell.Offset(counter, 13).Interior.Color = clrGreen 
     cell.Offset(counter, 21).Interior.Color = clrGreen 
     cell.Offset(counter, 22).Interior.Color = clrGreen 
     cell.Offset(counter, 23).Interior.Color = clrGreen 
     cell.Offset(counter, 29).Interior.ColorIndex = 16 
     cell.Offset(counter, 30).Interior.ColorIndex = 16 
     cell.Offset(counter, 31).Interior.Color = clrGreen 
     cell.Offset(counter, 32).Interior.Color = clrGreen 
     cell.Offset(counter, 34).Interior.ColorIndex = 16 
     cell.Offset(counter, 35).Interior.Color = clrGreen 
     cell.Offset(counter, 38).Interior.ColorIndex = 16 
     cell.Offset(counter, 39).Interior.ColorIndex = 16 
     cell.Offset(counter, 41).Interior.ColorIndex = 16 
     cell.Offset(counter, 42).Interior.ColorIndex = 16 
     cell.Offset(counter, 43).Interior.ColorIndex = 16 
     cell.Offset(counter, 44).Interior.ColorIndex = 16 

    Case Is = "Dolls" 
     cell.Offset(counter, 12).Interior.Color = clrBlue 
     cell.Offset(counter, 13).Interior.Color = clrBlue 
     cell.Offset(counter, 21).Interior.Color = clrBlue 
     cell.Offset(counter, 22).Interior.Color = clrBlue 
     cell.Offset(counter, 23).Interior.Color = clrBlue 
     cell.Offset(counter, 29).Interior.ColorIndex = 16 
     cell.Offset(counter, 30).Interior.ColorIndex = 16 
     cell.Offset(counter, 31).Interior.Color = clrBlue 
     cell.Offset(counter, 32).Interior.Color = clrBlue 
     cell.Offset(counter, 34).Interior.ColorIndex = 16 
     cell.Offset(counter, 35).Interior.Color = clrBlue 
     cell.Offset(counter, 38).Interior.ColorIndex = 16 
     cell.Offset(counter, 39).Interior.ColorIndex = 16 
     cell.Offset(counter, 41).Interior.ColorIndex = 16 
     cell.Offset(counter, 42).Interior.ColorIndex = 16 
     cell.Offset(counter, 43).Interior.ColorIndex = 16 
     cell.Offset(counter, 44).Interior.ColorIndex = 16 
    End Select 

End Sub 
Смежные вопросы