问题描述
我准备了复杂的加载项,并在处理过程中使用了快捷方式。用户希望以最简单的方式进行调用。它必须作为外接程序添加,不允许在个人工作簿中进行修改。
是否可以使用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