尝试在Excel中自动更改选项卡颜色

时间:2019-02-20 19:31:24

标签: excel vba

背景:我正在研究一个清单项目,该项目大约有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

2 个答案:

答案 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