1

我有一个工作表设置,只有某些单元格解锁以在其他锁定的工作表上进行编辑。所有这些单元格最初都是黄色的,并且是空的。我的目标是让单元格在输入任何数据时从它们的基本颜色黄色变为绿色,并且只要它包含任何类型的数据就保持绿色,但如果数据被删除则返回黄色。我已经为此编写了代码,但我看不出问题出在哪里,所以我一定遗漏了一些东西,因为代码没有按照我的意愿去做,而只会收到一条错误消息。此代码位于我的主工作簿代码中。

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 行:Else: Target.Interior.ColorIndex = 6。如果有人能帮我解决这个问题,我将不胜感激大大!

4

1 回答 1

1

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

更改颜色的一种简单方法是使用条件格式。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

这些是我给你的答案

于 2019-07-18T14:06:10.537 回答