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"
它会工作,但我不确定这是否是你想要的。