vba检测/阻止快速访问工具栏中的删除行

时间:2016-11-24 10:55:17

标签: excel vba excel-vba

我编写的代码会将工作表中已删除的行存档到一个隐藏的工作表中:

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

不幸的是,这仅在通过右键菜单删除行时才有效。

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

2 个答案:

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