2010-07-26 116 views
0

我有一份工作中使用的电子表格,用于跟踪返回的合同。我设置了一个颜色键,以便我可以快速浏览表单,查看哪些合同仍然需要退回给我们以及该帐户所属的哪位客户经理。使用VBA在Excel中着色一系列单元格

客户经理的首字母缩写列在A列;从那里我想根据谁在A中输入姓名的首字母来为该行中的单元格范围着色(A:H)。现在,我有以下代码,但我不喜欢电子表格的样子整行彩色:

Private Sub Worksheet_Change(ByVal Target As Excel.Range) 
If Target.Column <> 1 Then Exit Sub 

Select Case Target 

Case "MKH" 
Target.EntireRow.Interior.ColorIndex = 36 

Case "MAH" 
Target.EntireRow.Interior.ColorIndex = 39 

Case "MJM" 
Target.EntireRow.Interior.ColorIndex = 34 

Case "JVE" 
Target.EntireRow.Interior.ColorIndex = 35 

Case Else 
Target.EntireRow.Interior.ColorIndex = 0 

End Select 

PS我们办公室的大多数工作人员仍在使用Office 2003,因此条件格式不适用。

回答

4

如果你的问题是如何着色行,而不是整个一个的一部分,这应该工作:

Range("A" & Target.Row, "H" & Target.Row).Interior.ColorIndex = 10 
+0

是的,这工作!非常感谢 :-) – JTone 2010-07-26 15:35:31

0

取决于你有多少行有,你的计算机的速度,版本的Excel的等等。 事件通常会减慢工作表的速度,并在很大程度上降低其他VBA代码的速度。

对于你想要做的事“条件格式”总是一个更好的选择。