根据单元格值更改选项卡颜色,运行时错误

时间:2019-05-28 16:49:54

标签: excel vba

在我的工作簿的每个标签上,单元格I1计算是否应打印该标签(符合条件)

我正在尝试对每个标签进行编码,以查看I1并更改I1 = "Print"的标签颜色。我尝试的所有代码最终都导致Runtime error 1004

有人可以看到我的代码有什么问题吗?

编辑1:错误抛出

.Color = RGB(255,255,102)

编辑2:我已切换为“从变更计算”。谢谢你。

编辑3:同一本书中有两个模块代码,用于密码保护/取消保护所有标签页。这会干扰吗?
    子protect_all_sheets()
    顶部:
    pass = InputBox(“ password?”)
    repass = InputBox(“验证密码”)
    如果不是(通过=重新通过)然后
    MsgBox“您制作了嘘声”
    转到顶部
    如果结束
     对于i = 1 To Worksheets.Count
     如果Worksheets(i).ProtectContents = True,则转到oops
     下一个
     对于ActiveWorkbook.Worksheets中的每一个
     保护密码:= pass
     下一个
     退出子
     oops:MsgBox“我认为您的某些工作表已经受到保护。请取消保护所有工作表,然后运行此宏。”
    结束

Private Sub Worksheet_Change(ByVal Target As Range)
    MyVal = Range("I1").Text

    With ActiveSheet.Tab
        Select Case MyVal
            Case "Print"
                .Color = RGB(255, 255, 102)
            Case Else
                .ColorIndex = xlColorIndexNone
        End Select
    End With
End Sub

1 个答案:

答案 0 :(得分:1)

Worksheet_Change不是由计算触发的:您需要Worksheet_Calculate

Private Sub Worksheet_Calculate()
    Me.tab.color = IIf(Me.Range("I1").value="Print",vbRed,vbWhite)
End Sub