2015-08-20 29 views
0

我一直在處理一個宏,它使用基於下拉值的顏色填充某些單元格。當選擇一個值並且改變它時,它不會刪除之前根據其值填充的顏色。當工作表發生變化時,宏運行在一個專用的子工具上。它依次檢查單元值並用顏色填充字段。當一些事情發生變化以重置活動行時,私人小組是否值得使用?下面是宏代碼下地顏色:VBA替換顏色取決於下拉值

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'。請提供整個'sub'。 –

+0

整個子線約有1000條線。代碼重複不同的場景,從而在子結束它關閉的: 最終選擇 接下來 末次 – 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