Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“如何禁用”;插入“;VBA中的命令_Vba_Excel - Fatal编程技术网

“如何禁用”;插入“;VBA中的命令

“如何禁用”;插入“;VBA中的命令,vba,excel,Vba,Excel,我需要一个宏来禁用插入单元格、行和列。我尝试过这些不成功的技巧(其中包括): 在每次试验中,我都检索到错误,或者在选择列时禁用行的插入,反之亦然。 如何实现我的目标?您应该能够通过使用正确的参数保护您的工作表来实现这一目标 尝试将以下代码放入工作表的对象模块中(在Excel的“工作表”选项卡上,单击鼠标右键并选择“查看代码”): 更新:您也可以在Excel中使用菜单“工具”“保护”>“保护工作表”或在功能区上的“审阅”选项卡中的按钮来执行或撤消此操作 编辑:有关如何禁用特定菜单命令和控件,请参见

我需要一个宏来禁用插入单元格、行和列。我尝试过这些不成功的技巧(其中包括):

在每次试验中,我都检索到错误,或者在选择列时禁用行的插入,反之亦然。
如何实现我的目标?

您应该能够通过使用正确的参数保护您的工作表来实现这一目标

尝试将以下代码放入工作表的对象模块中(在Excel的“工作表”选项卡上,单击鼠标右键并选择“查看代码”):

更新:您也可以在Excel中使用菜单“工具”“保护”>“保护工作表”或在功能区上的“审阅”选项卡中的按钮来执行或撤消此操作


编辑:有关如何禁用特定菜单命令和控件,请参见

欢迎使用堆栈溢出。请阅读并了解如何提出一个好问题,从而生成好的有用答案。实际上,我想做的是使用菜单禁用“插入行”选项,因此我真正希望宏执行的是不允许用户使用命令栏插入行。我需要强制用户使用带有宏的按钮插入行。因此,如果我保护工作表,就不可能插入行。您的代码可以取消保护、插入和重新保护,或者,您可以在保护时指定
UserInterfaceOnly:=True
参数,以便您的代码仍然可以运行。@EvaFP:有关如何禁用特定菜单命令和控件,请参阅@EvaFP:使用
UserInterfaceOnly:=True
尝试新代码谢谢您的建议!现在它可以工作了,但当我点击任何按钮运行宏时,工作表会自动失去保护。。。
Application.CommandBars("Cell").Enabled = False

ActiveSheet.Protect AllowInsertingRows:=False, AllowInsertingColumns:=False

Application.CommandBars("Worksheet Menu Bar").FindControl _
 (ID:=296, Recursive:=True).Enabled = False

CommandBars("Cell").FindControl(, 21437).Enabled = False
Private Sub Workbook_SheetActivate(ByVal Sh As Object) 

     'ProtectSheet
    ActiveSheet.Protect AllowInsertingColumns:=False, AllowInsertingRows:=False, UserInterfaceOnly:=True         
End Sub