我@ Stephan1010同意,條件格式將是最好的途徑。它應該更易於管理,因爲您只有4種顏色,這意味着4個條件的OR語句包含所有適用的狀態。你不必修改所有30如果顏色/狀態要改變......
話雖這麼說,但它會嚴重影響您的工作簿的性能,可能中完成vba通過工作表事件。第一個代碼塊將捕獲的工作表1中的任何改變C列和更新的背景顏色(其他變化是可以做到很好的課程)
Private Sub Worksheet_Change(ByVal Target As Range)
minCol = Target.Cells(1, 1).Column
maxcol = minCol + (Target.Columns.Count - 1)
If minCol > 3 Or maxcol < 3 Then
Else
For Each cell In Target.Cells
If cell.Column = 3 Then
If Not IsError(Application.Match(cell.Value,
Worksheets("Sheet1").Range("Statuses"), 0))
Then
x = Application.Match(_
cell,Worksheets("Sheet1").Range("Statuses"), 0)
cell.Interior.Color = Worksheets("Sheet1")._
Range("Statuses").Cells(x, 1).Interior.Color
End If
End If
Next cell
End If
End Sub
然後,你需要捕獲任何改變您的以下狀態工作表1中的範圍和更新工作表2中的每個適用值。這將更加涉及,如果此步驟確實是必需的,那麼您應該能夠啓動它並基本實現上述代碼的反向邏輯。
[Conditional Formatting](http://office.microsoft.com/en-gb/excel-help/creating-conditional-formatting-formulas-HA001111661.aspx)不適合嗎? – pnuts
@pnuts我的路線恰好:),但你的鏈接似乎並沒有顯示教程? – Jaycal
@Jaycal起初讓我感到困惑! - 你向下滾動了嗎? – pnuts