使用UserInterfaceOnly锁定工作表后,是否可以让VBA更改单元格内部颜色?

我一直在研究广泛的可填充工作簿已有一段时间了。我现在到达末尾,我想保护工作簿。我在stackoverflow上读到,使用宏时,锁定工作表的最佳方法是使用UserInterfaceOnly。因此,我添加了以下代码:

Private Sub Lock_cells()
Worksheet("3. Keuze").Range("C3:C5,C7,C9,C13").Locked = False
Worksheet("3. Keuze").Protect UserInterfaceOnly:=True
End Sub

单元格C3:C5,C7,C9和C13必须保持打开状态才能填充。用户清除单元格后,单元格内部颜色应变为黄色。当单元格中填充一个值时,内部颜色应更改为绿色。为此,我创建了以下代码:

If Target.Address = "C3" Then
Call Fill_in_color1
End If

Sub Fill_in_color1
If IsEmpty(Cells(7,3).Value) = False Then
Cells(7,3).InteriorColor = RGB(112,173,71) 'GREEN
Cells(7,3).FontColor = vbWhite
Else
Cells(7,3).InteriorColor = RGB(255,255,231) 'YELLOW
Cells(7,3).Font.Color = vbBlack
End If
End Sub

锁定工作表时,正确的单元格被锁定,我可以编辑正确的单元格。但是,例如,当我清除单元格C3时,VBA给我一条错误消息: 运行时错误1004:应用程序定义或对象定义的错误 似乎锁定的工作表阻止VBA更改内部颜色。

有人知道如何解决这个问题吗?

提前谢谢了!

评论