我想禁用单元格编辑(直接键入单元格)但希望通过代码更新该单元格而不保护工作表
有没有人有任何想法?
答案 0 :(得分:0)
在工作表的代码模块中:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("A1:A10"), Target) Is Nothing Then
Application.EnableEvents = False
Target.ClearContents '// Assuming you want to keep it blank
Application.EnableEvents = True
End If
End Sub
然后在您想要更改值的代码中,只需在事先禁用事件:
'// Will be deleted
Range("A5").Value = "TEST"
'// Will not be deleted
Application.EnableEvents = False
Range("A5").Value = "TEST AGAIN"
Application.EnableEvents = True
答案 1 :(得分:0)
我遇到了类似的问题并找到了解决方法。无论出于何种原因,我都无法在受保护的工作表的情况下使我的宏正确运行,因此我所做的是作为代码为我不希望用户更改的任何单元格弹出消息框。然后,我将“Application.DisplayAlerts = False”添加到任何需要修改这些单元格的代码的开头,并在这些代码的末尾将警报重置为 True。