我编写的代码会将工作表中已删除的行存档到一个隐藏的工作表中:
Application.CommandBars("Row").FindControl(ID:=293).OnAction = "ArchiveRow"
不幸的是,这仅在通过右键菜单删除行时才有效。
有没有办法检测或阻止通过快速访问工具栏或使用快捷键删除行?
答案 0 :(得分:1)
我可以为您提供以下解决方法:
确保锁定工作表,并在锁定工作表时,不允许删除行和列。
如果您想使用宏,请在某处设置触发器,这样可以取消保护表格 - Sheets("Sheet1").Unprotect "mypassword"
。
然后,在宏的末尾,您可以使用以下方法再次保护工作表:
Sheets("Sheet1").Protect "mypassword"
它会起作用,但我不确定这是否是你想要的。
答案 1 :(得分:1)
可能的解决方法是在工作簿激活时禁用快捷方式和快速访问工具栏,然后在其停用时再次启用它们。虽然,如果您需要其他工具栏,这可能不是最佳选择:
在ThisWorkbook对象中:
Private Sub Workbook_Activate()
Application.ScreenUpdating = False
Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",False)"
With Application
.OnKey "^-", ""
End With
Application.ScreenUpdating = True
End Sub
Private Sub Workbook_Deactivate()
Application.ScreenUpdating = False
Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",True)"
With Application
.OnKey "^-", "^-"
End With
Application.ScreenUpdating = True
End Sub