背景:我正在研究一个清单项目,该项目大约有100张类似的图纸。我已经将所有工作汇总到一个汇总表中。如果有未选中的框,则该框将显示在每张纸底部的“摘要”部分。摘要部分底部有一个总计行,该行基本上显示了工作表上未选中项目的数量。
所以,现在我的问题是。如果该单元格的值大于0,那么我希望选项卡颜色为红色。如果它的值为0,那么我希望该工作表的标签颜色为绿色。
我在一些论坛上看到有人说我应该将我的代码放在该工作表的VBA编辑器中的Worksheet_Change函数下。但是那行不通。我将代码放在那里,它不会运行。我想知道是否有人知道我在做错什么。
我也尝试将代码放入模块中并在工作表代码中调用它,但这也不起作用。看来其他人已经在这种事情上取得了成功,所以我确定我只是没有想到什么。
供参考:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B104")) Is Nothing Then
Select Case Target.Value
Case Is > 0
ActiveSheet.Tab.ColorIndex = 3 'red
Case Is = 0
ActiveSheet.Tab.ColorIndex = 4 'green
Case Else
ActiveSheet.Tab.ColorIndex = xlNone 'no color
End Select
End If
End Sub
答案 0 :(得分:0)
使用蒂姆的建议和您的逻辑……我会做这样的事情:
Sub Workbook_SheetCalculate(ByVal Sh As Object)
If sh.name = "thatname" or sh.name = "anothername" then exit sub
Select Case sh.Range("B104").Value
Case Is > 0
Sh.Tab.ColorIndex = 3 'red
Case Is = 0
Sh.Tab.ColorIndex = 4 'green
Case Else
Sh.Tab.ColorIndex = xlNone 'no color
End Select
End Sub
对于任何缩进问题表示歉意,并通过我的手机发布。
答案 1 :(得分:-1)
这对我有用。遍历每张纸(更改A14
)和颜色代码。
Sub ColorCodeWS()
' loop thru each sheet
For Each ws In Sheets
ws.Activate
If Range("A14") > 0 Then
ActiveSheet.Tab.ColorIndex = 3 'red
ElseIf Range("A14") = 0 Then
ActiveSheet.Tab.ColorIndex = 4 'green
Else
ActiveSheet.Tab.ColorIndex = xlNone 'no color
End If
Next ws
End Sub