首页 > 解决方案 > VBA:如何从右键单击上下文菜单中禁用某些选项

问题描述

我需要

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

感谢任何帮助

标签: excelvbacontrols

解决方案


这是实现您想要的简单方法。对于它们中的大多数,您可以完全使用您在右键菜单中看到的内容。例如对于Insert,你看Insert...

Application.CommandBars("Cell").Controls("Insert...").Visible = True 'False

对其他人也是如此。我还没有找到禁用方法Paste Options:或其中的图标。但是,您可以使用上面提到的禁用Paste SpecialunderPaste Options: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

推荐阅读