加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有