excel2007中用宏添加和删除按钮(菜单)的方法
(2010-04-05 13:41:32)
标签:
office2007
excel2007
excel2010
vba
宏
|
分类:
IT
|
本人一直以来就喜欢在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 As 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:鼠标指针悬浮在按钮上时显示的屏幕提示。
④注意这四段代码放置的地方,即写入的地方。
⑤当然你也可以比葫芦画瓢,在第三段代码多添加几个按钮,每个按钮可心执行不同的宏。
|
|
|
|
|
|
|
喜欢
0
赠金笔
加载中,请稍候......