excel2007中用宏添加和删除按钮(菜单)的方法
2010-04-05 13:41阅读:
本人一直以来就喜欢在excel2003中把自己常用的一些方法制作成宏,然后在加一个按钮来控制这些宏,使工作非常方便和快捷。后来升级到excel2007之后,问题就出来了,那就是07没有工具栏,用03的宏生成的按钮在07中无处添加,导致错误停止,没有办法,只好手动。
怎样才能解决这个问题呢?我在网上慢慢的摸索,这些方面的文章太少了,费了好大的劲。一个偶然的机会才知道,在07中添加按钮(菜单)是在加载项中,根据网友提示进行操作,终于成功,而且发现在03中也一样可以用,只不过启动的是一个新的工具栏,在视图→工具栏→下拉菜单中的最后一行可以看到。为方便其他有同样需要的网友特别写出来,以供大家参考。
方法如下:
1.下面这个代码写在打开工作薄时的事件中,用于启动建立按钮的宏。
Private Sub Workbook_Open()
Call CreateToolbar
End Sub
2.下面这个代码写在关闭工作薄时的事件中,用于删除刚才建立的按钮。
Private Sub Workbook_BeforeClose(Cancel As
Boolean)
Call DeleteToolbar
End Sub
3.下面是建立按钮的宏,写在模块中,代码如下:
Const TOOLBARNAME As String =
'我的工具栏'
Sub CreateToolbar()
Dim TBar A |
|
s
CommandBar
Dim
Btn
As
CommandBarButton
'如果存在则删除已存在的工具栏
On
Error
Resume
Next
CommandBars(TOOLBARNAME).Delete
On
Error
GoTo
0
'创建工具栏
Set
TBar
=
CommandBars.Add
With
TBar
.Name
=
TOOLBARNAME
.Visible
=
True
End
With
'添加按钮
Set
Btn
=
TBar.Controls.Add(Type:=msoControlButton)
With
Btn
.FaceId
=
300
.OnAction='Macro1'
.Caption
=
'Macro1'
End
With
'添加另一个按钮
Set
Btn
=
TBar.Controls.Add(Type:=msoControlButton)
With
Btn
.FaceId
=
25
.OnAction='Macro2'
.Caption
=
'Macro2'
End
With
End
Sub
4.下面这段代码用于删除按钮,写在模块中。
Sub
DeleteToolbar()
On
Error
Resume
Next
CommandBars(TOOLBARNAME).Delete
On
Error
GoTo
0
End
Sub
说明:
①代码中使用了一个模块级的常量TOOLBARNAME,用来存储工具栏的名称,并用于这两个过程中。
②如果已存在具有相同名字的工具栏,则该过程先删除该工具栏。这样将会避免企图创建与已存在的工具栏有相同名称的工具栏时,产生错误。
③通过使用CommandBars对象的Add方法来创建该工具栏,使用Controls对象的Add方法来添加两个按钮,每个按钮都有三个属性:
FaceID:确定显示在按钮中的图像的数字。
OnAction:在单击按钮时执行的宏,建立按钮的目的就是要用这个按钮来执行这个宏。
Caption:鼠标指针悬浮在按钮上时显示的屏幕提示。
④注意这四段代码放置的地方,即写入的地方。
⑤当然你也可以比葫芦画瓢,在第三段代码多添加几个按钮,每个按钮可心执行不同的宏。
|
|