我想阻止一些命令栏选项,但我目前使用的方法有点过于严格。我目前使用此代码:
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秒运行一段代码?
答案 0 :(得分:0)
在要禁用命令栏选项的工作簿模块中,输入:
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
每当您在工作簿中工作时,都应禁用这些命令。我不确定它是否可以在Excel 2007中运行,因为Application.CommandBars.FindControl(ID:=847).Caption
为&Delete
,并且在单元格右键单击和右键单击选项卡上仍然启用了删除。
在Excel 2007中,您可以为活动工作簿禁用功能区命令,但这并不容易。您必须将工作簿扩展名更改为.zip
,然后编辑zip中.rels
文件夹中的_rels
文件。将扩展名更改回编辑后的状态,应禁用目标命令或组。禁用功能区命令还会禁用任何关联的右键单击命令。踢球者是功能区中无法使用工作表添加/删除命令。