vba检测/防止从快速访问工具栏删除行

我编写了将工作表中被删除的行存档到隐藏表单中的代码:

Application.CommandBars("Row").FindControl(ID:=293).OnAction = "ArchiveRow" 

不幸的是,这只适用于通过右键菜单删除行。

有没有办法通过快速访问工具栏或使用快捷键来检测或防止删除行?

可能的解决方法是在工作簿激活时禁用快捷方式和快速访问工具栏,然后在停用时再次启用它们。 虽然如果你需要其他的东西的工具栏,这可能不是最好的select:

在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 

我可以为您提供以下解决方法:

  • 确保你locking了你的工作表,当你locking它时,你不允许删除行和列。

  • 当你想使用你的macros时,在某处设置一个触发器,解除对这个Sheets("Sheet1").Unprotect "mypassword"保护 – Sheets("Sheet1").Unprotect "mypassword"

  • 然后,在macros的末尾,可以用下面的方法再次保护Sheets("Sheet1").Protect "mypassword"Sheets("Sheet1").Protect "mypassword"

它会工作,但我不确定这是否是你想要的。