You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel VBA如何禁用全部右键上下文菜单?含单元格与工作表标签右键

解决Excel工作簿右键上下文菜单禁用问题

核心说明

你提供的代码属于Excel内置事件过程,无需手动传递参数,参数会由Excel自动触发传入,关键是要把代码放在正确的模块中,并补充缺失的工作表标签右键禁用逻辑。


步骤1:禁用所有工作表单元格右键

将以下代码放入ThisWorkbook代码模块(右键Excel左侧导航栏的ThisWorkbook→选择「查看代码」),即可对所有工作表的单元格右键生效:

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
    Cancel = True ' 直接取消右键菜单弹出
    ' 若不需要提示弹窗,可删除下面一行
    ' MsgBox "Sorry Right Click is Disabled for this Workbook"
End Sub

注:无需在每个工作表单独添加Worksheet_BeforeRightClick,工作簿级事件已覆盖所有工作表。

步骤2:禁用工作表标签右键

单元格右键事件无法覆盖工作表标签,需补充以下代码到ThisWorkbook代码模块,通过禁用对应命令栏实现:

Private Sub Workbook_Open()
    ' 禁用工作表标签右键菜单
    CommandBars("Ply").Enabled = False
    ' 可选:直接禁用单元格右键菜单,配合事件双重保障
    CommandBars("Cell").Enabled = False
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    ' 关闭工作簿时恢复右键菜单,避免影响其他Excel文件
    CommandBars("Ply").Enabled = True
    CommandBars("Cell").Enabled = True
End Sub

注意事项

  • 所有代码必须放在ThisWorkbook模块,普通模块或工作表模块无法触发工作簿级事件。
  • 若之前在工作表模块添加过Worksheet_BeforeRightClick,建议删除,避免逻辑冲突。
  • 保存工作簿为.xlsm或.xlsb格式(启用宏的格式),否则代码无法生效。

内容的提问来源于stack exchange,提问作者Sean Osborn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 07:22:37