美的不是这个世界,而是承载这个世界的美丽的你的目光
如果想在Excel 2007中创建一个工具栏应注意下面的一些限制
1不能够自由浮动
2总是显示在加载项选项卡自定义工具栏组中
3Excel会忽略一些CommandBar的属性和方法
创建工具栏的代码
这里的代码假定有一个带有两个名为Macro1和Macro2宏的工作簿并且在该工作簿打开时创建这个工具栏在关闭该工作簿时删除这个工具栏
注意与Ribbon定制不同不管当前是哪个工作簿自定义工具栏者是可见的
在ThisWorkbook代码模块中输入下面的过程第一个过程为在打开工作簿时调用创建工具栏的过程第二个过程为在关闭工作簿时调用删除工具栏的过程
Private Sub Workbook_Open
Call CreateToolbar
End SubPrivate
Sub Workbook_BeforeCloseCancel As Boolean
Call DeleteToolbar
End Sub 过程CreateToolbar的代码如下:
Const TOOLBARNAME As String = "我的工具栏"
Sub CreateToolbar
Dim TBar As CommandBar
Dim Btn As CommandBarButton
'如果存在则删除已存在的工具栏
On Error Resume Next
CommandBarsTOOLBARNAME.Delete
On Error GoTo 0
'创建工具栏
Set TBar = CommandBars.Add
With TBar
.Name = TOOLBARNAME
.Visible = True
End With
'添加按钮
Set Btn = TBar.Controls.AddType:=msoControlButton
With Btn
.FaceId = 300
.
.Caption = "这里是Macro1的提示"
End With
'添加另一个按钮
Set Btn = TBar.Controls.AddType:=msoControlButton
With Btn
.FaceId = 25
.
.Caption = "这里是Macro2的提示"
End With
End Sub
图1显示了带有这两个按钮的工具栏
'http://detail.zol.com.cn/picture_index_282/index2813387.shtml';" title="Excel2007中老式工具栏的限制 " alt="Excel2007中老式工具栏的限制 " align=no src="/cache/201507/14/103148gFCdeK.gif"> 图1 一个老式工具栏位于加载项选项卡的自定义工具栏中
代码中使用了一个模块级的常量TOOLBARNAME用来存储工具栏的名称并用于这两个过程中
如果已存在具有相同名字的工具栏则该过程先删除该工具栏这样将会避免企图创建与已存在的工具栏有相同名称的工具栏时产生错误
通过使用CommandBars对象的Add方法来创建该工具栏使用Controls对象的Add方法来添加两个按钮每个按钮都有三个属性
FaceID:确定显示在按钮中的图像的数字
OnAction:在单击按钮时执行的宏
Caption:鼠标指针悬浮在按钮上时显示的屏幕提示
技巧不仅可以设置FaceID属性还可以设置Picture属性使用任何的imageMso图像例如下面的语句晶粒示一个绿色的勾号
PLAIN TEXT
Visual Basic:
.Picture = Application.CommandBars.GetImageMso _
"AcceptInvitation", 16, 16
关于imageMso图像的更多信息请参见定制RibbonX
在关闭工作簿时触发Workbook_BeforeClose事件过程调用过程DeleteToolbar:
Sub DeleteToolbar
On Error Resume Next
CommandBarsTOOLBARNAME.Delete
On Error GoTo 0
End Sub