我试图保护工作簿中的单元格不被编辑。我写了这段代码,
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
End Sub
但经过一些测试后,我发现了异常。如果我切割一个单元格并粘贴到另一个单元格,它是允许的!我不确定是否还有其他类似的例外情况我还没弄明白。我的问题是如何保护正在编辑的单元格,同时又能够复制?
答案 0 :(得分:2)
使用仅限界面选项,这样可以锁定工作表 - 但仅限于用户交互。任何代码都可以与工作表交互而不会被阻止:
Private Sub Workbook_Open()
For Each ws In ThisWorkbook.Sheets
ws.Protect UserInterfaceOnly:=True
Next
End Sub
答案 1 :(得分:1)
没有保护床单,我能想到的唯一解决方案是:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If Application.CutCopyMode = 2 Then Application.CutCopyMode = 0
End Sub
应该自我解释;)
或运行所有表格,如:
Sub protectAllSheets()
Dim x As Variant
For Each x In ThisWorkbook.Sheets
x.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Next
End Sub