VBA:如何从右键单击上下文菜单中禁用某些选项
Posted
技术标签:
【中文标题】VBA:如何从右键单击上下文菜单中禁用某些选项【英文标题】:VBA: How can I disable some options from right-click context menu 【发布时间】:2020-07-03 13:27:11 【问题描述】:我需要
1) 从“单元格”右键单击上下文菜单中禁用以下所有选项
a. Paste options
b. Insert
c. Delete
d. Format Cell
2) 从“列”右键单击上下文菜单中禁用以下所有选项
a. Paste options
b. Insert
c. Delete
d. Clear Content
e. Format Cell
3) 从“行”右键单击上下文菜单中禁用以下所有选项
a. Paste options
b. Insert Copied Cells only (Not Insert)
c. Format Cell
4) 禁用“行”右键单击上下文菜单中特定行范围(例如第 1 到 3 行)的所有以下选项
a. Insert
b. Delete
c. Clear Content
5) 从“表单控制按钮”右键单击上下文菜单中禁用以下所有选项
a. Format Control
感谢任何帮助
【问题讨论】:
阅读:rondebruin.nl/win/s6/win001.htm 【参考方案1】:这里有一个简单的方法来实现你想要的。对于它们中的大多数,您可以完全使用您在右键菜单中看到的内容。例如对于Insert
,您会看到Insert...
。
Application.CommandBars("Cell").Controls("Insert...").Visible = True 'False
对其他人也是如此。我还没有找到禁用Paste Options:
或其中的图标的方法。但是,您可以使用Paste Special...
禁用Paste Options:
下的Paste Special
,就像我上面提到的那样使用Paste Special...
注意:这是您遇到的最少的问题。请记住,用户仍然可以使用功能区或快捷键来实现您禁用的那些事情;)
编辑
不幸的是,这对我不起作用。跟表格有关系吗?因为单元格是表格的一部分! – Afshin Davoudy 8 分钟前
是的,你必须使用
Application.CommandBars("List Range Popup").Controls("Delete").Visible = False
之前
之后
Afshin Davoudy:如何禁用“列”上下文菜单中的选项?还是行? (来自扩展聊天)
使用
Application.CommandBars("Column").Controls("Delete").Visible = False
Application.CommandBars("Row").Controls("Delete").Visible = False
【讨论】:
感谢您的回复。我应该把它放在 Worksheet_Activate() 中吗? 您可以,但这并不能解决目的,因为用户可以轻松找到绕过它的方法。此外,您必须在工作簿打开事件期间处理它,因为如果工作簿以该工作表作为默认工作表打开,Worksheet_Activate()
不会触发。
在哪里?在哪条线上?你需要精确
您的解决方案只有一行。我把它放在workbook_open中,所以错误就在那一行!
我在您的代码中将“插入”替换为“删除”。错误消失了,但上下文菜单中的“删除”选项仍然有效以上是关于VBA:如何从右键单击上下文菜单中禁用某些选项的主要内容,如果未能解决你的问题,请参考以下文章
如何禁用右键单击事件或如何隐藏 Autodesk Forge 查看器上的上下文菜单
在 React 中禁用 Firefox 的右键单击上下文菜单