单元格更改后不会变成绿色

时间:2019-07-17 19:57:49

标签: excel vba

我设置了一个工作表,仅将某些单元格解锁才能在其他情况下锁定的工作表上进行编辑。所有这些单元格最初都被染成黄色,并且是空的。我的目标是让单元格在输入任何数据时从黄色的基色变为绿色,并在包含任何类型的数据的情况下保持绿色,但是如果删除了数据,则将其变为黄色。我已经为此编写了代码,但我看不出问题出在哪里,所以我一定缺少一些东西,因为该代码无法实现我想要的功能,而只会得到一条错误消息。该代码位于我的主要工作簿代码中。

Private Sub Workbook_SheetChange(ByVal sh As Object, ByVal Target As Range)
    If Target.Worksheet.Index = 3 Then
        If Not IsEmpty(Target) Then
        Target.Interior.ColorIndex = 4
        Else: Target.Interior.ColorIndex = 6
        End If
    End If
End Sub

我得到的错误是“运行时错误“ 1004”:应用程序定义或对象定义的错误,发生在第5行:     否则:Target.Interior.ColorIndex = 6。 如果有人可以帮助我,我将不胜感激!

1 个答案:

答案 0 :(得分:0)

几天前,我遇到了同样的问题。问题是当工作表受到保护时,无法更改特定单元格的格式。单元是被锁定还是解锁都没有关系。

更改颜色的一种简单方法是使用条件格式。 1.选择要格式化的单元格 2.设置新规则,以便该单元格为空时填充为黄色,当填充时填充为绿色。

=A1="" then format yellow
=A1<>"" then format green 

您可以尝试的另一件事是,当您希望工作表变成新颜色时,将其解锁并锁定。但是,我认为这仅在使用宏的情况下有效。

Private Sub Workbook_SheetChange(ByVal sh As Object, ByVal Target As Range)

Dim Destino As Workbook

Destino.ActiveShee.Unprotect("password")

If Target.Worksheet.Index = 3 Then
    If Not IsEmpty(Target) Then
    Target.Interior.ColorIndex = 4
    Else: Target.Interior.ColorIndex = 6
    End If
End If

Destino.ActiveShee.protect("password")

End Sub

这些是我为您提供的答案