如何在Excel功能区中添加按钮以调用自定义加载项?

问题描述

我准备了复杂的加载项,并在处理过程中使用了快捷方式。用户希望以最简单的方式进行调用。它必须作为外接程序添加,不允许在个人工作簿中进行修改。

是否可以使用VBA在功能区的“加载项”部分之外添加用于调用用户窗体的自定义按钮? 我尝试了几种方法来在“加载项”部分添加按钮,但是我做到了100%正确。按钮添加了,但是复制有问题,不能通过excel close删除。

解决方法

您可以使用 CommandBars CommandBarControls 类来完成工作。

请注意一些注意事项:

  • 添加控件时,应将Temporary属性指定为True或False
  • 如果您在添加更多控件之前不删除控件,并且它们相同,则它们将被复制。适当删除的最佳方法是在添加按钮时,在 Tag 属性中添加一些唯一的文本(这样就不会删除其他可能存在的控件)。

添加为临时文件(所有操作均在“加载项”标签中进行):

Dim cBar as CommanBars
Dim cBtn as CommandBarButton

Set cBar = CommandBars("Worksheet Menu Bar")
Set cBtn = cBar.Controls.Add(Type:=msoControlButton,Temporary:=True)

With cBtn
    .Visible = True
    .Enabled = True
    .Tag = "coolButton"
    .FaceId = 123
    .Caption = "Cool Trick"
    .Style = msoButtonIconAndCaption
    .TooptipText = "this button does something magically!!"
    .OnAction = "Module1.SomeMacro"
End with

移除:

Dim cBar as CommanBars
Dim cBtn as CommandBarButton

Set cBar = CommandBars("Worksheet Menu Bar")

For Each cBtn in cBar.Controls
    If cBtn.Tag = "coolButton" Then: cBtn.Delete
Next cBtn

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...