禁用在单元格中编辑而不保护工作表vba

时间:2016-01-25 14:14:03

标签: excel vba cell

我想禁用单元格编辑(直接键入单元格)但希望通过代码更新该单元格而不保护工作表

有没有人有任何想法?

2 个答案:

答案 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。