我@ 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