我想屏蔽掉一些命令栏选项,但是我目前使用的方法有点太严格了。我目前使用的代码是:
Sub Auto_Open()
Application.CommandBars.FindControl(ID:=847).Enabled = False
End Sub
Sub Auto_Close()
Application.CommandBars.FindControl(ID:=847).Enabled = True
End Sub
这样做的问题是,只要包含此代码的工作簿保持打开状态,其他工作簿就不能使用无效控件。我认为一个解决方案可能是使用:
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Application.CommandBars.FindControl(ID:=847).Enabled = False
End Sub
这将阻止用户在右键单击(比如删除工作表)时使用我的无效控件。
我现在需要一种方法来删除这些空格,只要它们单击离开,这样控件就可以在它们可能打开的任何其他工作簿中使用。有没有一个我可以用来做这件事的事件,它不是很常见,它会让代码每10秒运行一次?我还想知道是否可以在vba中使用延迟来在前一段代码后5秒运行一段代码?
发布于 2014-07-04 19:29:50
在要禁用命令栏选项的工作簿模块中,输入:
Private Sub Workbook_Activate()
Application.CommandBars.FindControl(ID:=847).Enabled = False
End Sub
Private Sub Workbook_Deactivate()
Application.CommandBars.FindControl(ID:=847).Enabled = True
End Sub
当您在工作簿中工作时,应禁用这些命令。我不确定它是否能在Excel2007中工作,因为Application.CommandBars.FindControl(ID:=847).Caption
是&Delete
,并且在单元格右键单击和tab右键单击时删除仍然是启用的。
在Excel2007中,您可以禁用活动工作簿的功能区命令,但这并不容易。您必须将工作簿扩展名更改为.zip
,然后编辑压缩包中_rels
文件夹中的.rels
文件。将扩展名更改回编辑后的状态,目标命令或组应被禁用。禁用功能区命令也会禁用所有关联的单击鼠标右键命令。更重要的是,工作表添加/删除命令在功能区中不可用。
https://stackoverflow.com/questions/24568997
复制相似问题