首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >右键单击后要运行的代码

右键单击后要运行的代码
EN

Stack Overflow用户
提问于 2014-07-04 15:36:14
回答 1查看 1.2K关注 0票数 0

我想屏蔽掉一些命令栏选项,但是我目前使用的方法有点太严格了。我目前使用的代码是:

代码语言:javascript
运行
复制
Sub Auto_Open()
Application.CommandBars.FindControl(ID:=847).Enabled = False
End Sub

Sub Auto_Close()
Application.CommandBars.FindControl(ID:=847).Enabled = True
End Sub

这样做的问题是,只要包含此代码的工作簿保持打开状态,其他工作簿就不能使用无效控件。我认为一个解决方案可能是使用:

代码语言:javascript
运行
复制
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秒运行一段代码?

EN

回答 1

Stack Overflow用户

发布于 2014-07-04 19:29:50

在要禁用命令栏选项的工作簿模块中,输入:

代码语言:javascript
运行
复制
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文件。将扩展名更改回编辑后的状态,目标命令或组应被禁用。禁用功能区命令也会禁用所有关联的单击鼠标右键命令。更重要的是,工作表添加/删除命令在功能区中不可用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24568997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档