2013-05-30 183 views
1

我有一个单元格(“L2”),它由if函数控制,根据用户在其他字段中的输入来确定“PASS”,“ERROR”或“CHECK BOX”。Excel VBA:自动调整标签颜色

每当单元格L2的值发生变化时,我都希望基于单元格内容自动更改相应选项卡的颜色。

我的代码目前看起来像这样,但不幸的是,它不起作用。你可以看一看,帮我一下吗?非常感谢您的帮助!

Private Sub Worksheet_Change(ByVal Target As Range) 

If Target.Address(False, False) = "L2" Then 

    Select Case Target.Value 
     Case "ERROR" 
      Me.Tab.ColorIndex = 3 
     Case "PASS" 
      Me.Tab.ColorIndex = 4 
     Case Else 
      Me.Tab.ColorIndex = xlColorIndexNone 
    End Select 

End If 
End Sub 

编辑:

我注意到一些有趣的事情:由于细胞“L2”的显示值经由被包含在其内的,如果功能的控制,VBA不会出现读取显示值,而是来自单元格的if语句。我怎样才能解决这个问题?

感谢您的帮助。

+0

哪里错误发生,你得到了什么消息? –

+0

没有发生错误,但不会发生更改。 – jcv

+0

你的代码没问题,正在做你所需要的。您必须确保您在代码所属的同一工作表中进行测试(VBA/IDE中的工作表模块)。 –

回答

2


如果你想这取决于在L2的值,则使用此代码的标签颜色改变:

Private Sub Worksheet_Change(ByVal Target As Range) 
    Select Case Range("$L$2").Value 
     Case "ERROR" 
      Me.Tab.ColorIndex = 3 
     Case "PASS" 
      Me.Tab.ColorIndex = 4 
     Case Else 
      Me.Tab.ColorIndex = xlColorIndexNone 
    End Select 
End Sub 
+0

这工作,真棒。非常感谢:) – jcv

+0

@jcv youre welcome – 2013-05-30 13:49:09

+0

不知何故,你介意快速浏览一下吗? if语句有错误,我不知道为什么。应该是直截了当:私人小组Worksheet_Change(BYVAL目标作为范围) 如果范围( “L5”)值= “意见书:23/23”,然后 选择受案范围( “$ L $ 2”)值 。情况下 “ERROR” Me.Tab.ColorIndex = 3 情况下 “PASS” Me.Tab.ColorIndex = 4 否则 Me.Tab.ColorIndex = xlColorIndexNone 结束如果 结束选择 结束子} – jcv