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

如何通过Excel VBA移除右键菜单中的New Comment、New Note和Link项?

解决Excel右键菜单隐藏New Comment、New Note和Link项的VBA方案

核心思路:通过控件ID精准定位

Office右键菜单的部分控件依赖ID标识而非显示名称(多语言版本或不同Office版本中,显示名称可能存在差异),以下是三个目标项的对应ID:

  • New Comment: ID 1966
  • New Note: ID 1967
  • Link: ID 1575

具体实现代码

1. 工作簿激活时隐藏目标控件

将代码放入ThisWorkbook模块:

Private Sub Workbook_Activate()
    Dim cmdBar As CommandBar
    Set cmdBar = Application.CommandBars("Cell")
    
    ' 隐藏New Comment (ID 1966)
    On Error Resume Next ' 兼容控件不存在的情况,避免代码中断
    cmdBar.FindControl(ID:=1966).Visible = False
    On Error GoTo 0
    
    ' 隐藏New Note (ID 1967)
    On Error Resume Next
    cmdBar.FindControl(ID:=1967).Visible = False
    On Error GoTo 0
    
    ' 隐藏Link (ID 1575)
    On Error Resume Next
    cmdBar.FindControl(ID:=1575).Visible = False
    On Error GoTo 0
    
    ' 保留你的原有隐藏逻辑
    cmdBar.Controls("Filter").Visible = False
End Sub

2. 工作簿停用/关闭时恢复控件可见性

同样在ThisWorkbook模块添加恢复代码:

Private Sub Workbook_Deactivate()
    Dim cmdBar As CommandBar
    Set cmdBar = Application.CommandBars("Cell")
    
    ' 恢复New Comment
    On Error Resume Next
    cmdBar.FindControl(ID:=1966).Visible = True
    On Error GoTo 0
    
    ' 恢复New Note
    On Error Resume Next
    cmdBar.FindControl(ID:=1967).Visible = True
    On Error GoTo 0
    
    ' 恢复Link
    On Error Resume Next
    cmdBar.FindControl(ID:=1575).Visible = True
    On Error GoTo 0
    
    ' 恢复你的原有控件
    cmdBar.Controls("Filter").Visible = True
End Sub

额外排查方法

如果仍无法定位目标控件,可以遍历右键菜单控件,打印所有项的ID和名称,确认准确标识:

Sub ListCellMenuControls()
    Dim ctrl As CommandBarControl
    For Each ctrl In Application.CommandBars("Cell").Controls
        Debug.Print "ID: " & ctrl.ID & " | 显示名称: " & ctrl.Caption
    Next ctrl
End Sub

运行宏后,在VBA编辑器的立即窗口(按Ctrl+G调出)查看输出结果,即可找到目标项的准确信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 20:42:05