Excel 2007教程:对中老式工具栏的限制

王朝学院·作者佚名  2009-02-28
窄屏简体版  字體: 小  |  中  |  大  |  超大  

如果想在Excel 2007中创建一个工具栏,应注意下面的一些限制:

(1)不能够自由浮动;

(2)总是显示在加载项选项卡自定义工具栏组中;

(3)Excel会忽略一些CommandBar的属性和方法;

创建工具栏的代码:

这里的代码假定有一个带有两个名为Macro1和Macro2宏的工作簿,并且在该工作簿打开时创建这个工具栏,在关闭该工作簿时删除这个工具栏。

注意,与Ribbon定制不同,不管当前是哪个工作簿,自定义工具栏者是可见的。

在ThisWorkbook代码模块中,输入下面的过程。第一个过程为在打开工作簿时调用创建工具栏的过程,第二个过程为在关闭工作簿时调用删除工具栏的过程。

Private Sub Workbook_Open()

Call CreateToolbar

End SubPrivate

Sub Workbook_BeforeClose(Cancel 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

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

.

.Caption = "这里是Macro1的提示"

End With

'添加另一个按钮

Set Btn = TBar.Controls.Add(Type:=msoControlButton)

With Btn

.FaceId = 25

.

.Caption = "这里是Macro2的提示"

End With

End Sub

代码中使用了一个模块级的常量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

CommandBars(TOOLBARNAME).Delete

On Error GoTo 0

End Sub

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航