如何禁用Excel 2021触摸屏长按/双击弹出的触摸快捷菜单?
禁用Excel 2021触摸屏长按/双击弹出菜单的VBA解决方案
你遇到的这个水平弹出栏是Excel针对触摸屏设计的专属快捷菜单,普通的右键、双击事件拦截无法覆盖它,可通过以下两种方法处理:
方法1:直接禁用触摸快捷命令栏
在工作簿的ThisWorkbook模块中添加以下代码,从根源上关闭该触摸菜单:
Private Sub Workbook_Open() ' 禁用触摸屏快捷命令栏,添加错误捕获避免菜单不存在时报错 On Error Resume Next Application.CommandBars("Touch Shortcuts").Enabled = False Application.CommandBars("Touch Mode").Enabled = False On Error GoTo 0 End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean) ' 可选:关闭工作簿时恢复触摸菜单,避免影响其他工作簿的触摸功能 On Error Resume Next Application.CommandBars("Touch Shortcuts").Enabled = True Application.CommandBars("Touch Mode").Enabled = True On Error GoTo 0 End Sub
方法2:关闭Excel触摸交互模式
搭配你现有的右键、双击禁用代码,强制Excel退出触摸模式,彻底屏蔽触摸专属交互:
' 保留你原有的右键禁用代码 Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) Cancel = True End Sub ' 保留你原有的双击禁用代码 Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) Cancel = True End Sub ' 打开工作簿时关闭触摸模式 Private Sub Workbook_Open() Application.Touch = False End Sub ' 可选:关闭工作簿时恢复触摸模式 Private Sub Workbook_BeforeClose(Cancel As Boolean) Application.Touch = True End Sub
注意事项
- 所有代码需粘贴到
ThisWorkbook模块(不是普通工作表模块) - 工作簿需保存为启用宏的格式(.xlsm),否则代码无法生效
- 若仅需针对特定工作表生效,可将
Workbook_SheetXXX事件改为对应工作表的Worksheet_XXX事件
内容的提问来源于stack exchange,提问作者edednedy
相关产品推荐
相关产品推荐

