顶级ps技术:创建自定义工具栏示例-
来源:百度文库 编辑:九乡新闻网 时间:2024/04/28 16:40:22
在《RibbonX: Customizing the Office 2007 Ribbon》的第1章,介绍了一个在Excel 2003及以前版本中定制工具栏的很好的示例,现辑录于此,与大家分享。
首先,在VBE中,插入一个类模块,并命名为clsEvents,输入下面的代码:
'声明应用程序事件Public WithEvents appXL As ApplicationPublic WithEvents drop As Office.CommandBarComboBox Private Sub appXL_SheetActivate(ByVal Sh As Object)Dim ws As WorksheetDim Wb As WorkbookDim i As Long On Error GoTo Err_HandlerSet Wb = ActiveWorkbookIf Not Wb.Name = ThisWorkbook.Name Then Exit Sub'初始化复选框 Set g_cmdbarcboBox = g_cmdBar.FindControl(Type:=msoControlDropdown, Tag:="MyList")g_cmdbarcboBox.Clear'添加复选框项目,即工作表名称 For Each ws In Sh.Parent.Sheetsg_cmdbarcboBox.AddItem ws.NameNextFor i = 1 To g_cmdbarcboBox.ListCountIf g_cmdbarcboBox.List(i) = Sh.Name Then g_cmdbarcboBox.ListIndex = i: Exit ForNextCall drop_Change(g_cmdbarcboBox)Exit SubErr_Handler:ErrHandle ErrEnd Sub Private Sub appXL_WorkbookActivate(ByVal Wb As Workbook)Set g_cmdbarcboBox = g_cmdBar.FindControl(Type:=msoControlDropdown, Tag:="MyList")If Wb.Name = ThisWorkbook.Name Theng_cmdbarcboBox.Enabled = TrueappXL_SheetActivate Wb.ActiveSheetElse:Call deleleteControlsg_cmdbarcboBox.Enabled = FalseEnd IfExit SubErr_Handler:ErrHandle ErrEnd Sub Public Sub setDrop(box As Office.CommandBarComboBox)'设置复选框对象 Set drop = boxEnd Sub Private Sub drop_Change(ByVal Ctrl As Office.CommandBarComboBox)'如果选择的复选框文本为工作表名称,则创建相应的菜单 Select Case UCase(Ctrl.Text)Case "SUPPLIERS"Call setMNUSUPPLIERSCase "CUSTOMERS"Call setMNUCUSTOMERSCase "ACCOUNTS"Call setMNUACCOUNTSCase ElseCall deleleteControlsEnd SelectEnd Sub
然后,添加标准模块,输入下面的代码:
'声明全局变量Public Const gcstrCMDBARNAME As String = "DYNAMIC MENU"Public Const gcstrMNUSUPPLIERS As String = "Suppliers"Public Const gcstrMNUCUSTOMERS As String = "Customers"Public Const gcstrMNUACCOUNTS As String = "Accounts" Public g_cmdBar As CommandBarPublic g_cmdbarMenu As CommandBarPopupPublic g_cmdbarBtn As CommandBarButtonPublic g_cmdbarcboBox As CommandBarComboBoxPublic gcls_appExcel As New clsEventsPublic gcls_cboBox As New clsEvents Sub wsBuildMenus()Call wsDeleteMenusOn Error GoTo Err_Handler'添加工具栏,并设置尺寸 Set g_cmdBar = CommandBars.Add(gcstrCMDBARNAME, msoBarFloating)g_cmdBar.Width = 150'添加复选框 Set g_cmdbarcboBox = g_cmdBar.Controls.Add(Type:=msoControlDropdown)'设置复选框标签以便程序中识别 '设置复选框操作过程 With g_cmdbarcboBox.Tag = "MyList".OnAction = "selectedSheet".Width = 150End With'添加帮助按钮 Set g_cmdbarBtn = g_cmdBar.Controls.Add(Type:=msoControlButton)With g_cmdbarBtn.Caption = "帮助".OnAction = "runHelp".Style = msoButtonIconAndCaption.FaceId = 984End With'设置应用程序级事件并传递复选框对象 Set gcls_appExcel.appXL = Applicationgcls_cboBox.setDrop g_cmdbarcboBoxWith g_cmdBar.Visible = True.Protection = msoBarNoChangeDock + msoBarNoResizeEnd WithExit SubErr_Handler:ErrHandle ErrEnd Sub '删除菜单工具栏Sub wsDeleteMenus()On Error Resume NextApplication.CommandBars(gcstrCMDBARNAME).DeleteSet g_cmdBar = NothingSet g_cmdbarMenu = NothingSet g_cmdbarBtn = NothingSet g_cmdbarcboBox = NothingSet gcls_appExcel = NothingSet gcls_cboBox = NothingEnd Sub '删除工具栏中的菜单项Sub deleleteControls()On Error Resume Nextg_cmdBar.Controls(gcstrMNUACCOUNTS).Deleteg_cmdBar.Controls(gcstrMNUCUSTOMERS).Deleteg_cmdBar.Controls(gcstrMNUSUPPLIERS).DeleteEnd Sub '设置复选框中选中项目后的操作,即激活与项目名称相同的工作表Sub selectedSheet()Dim g_cmdbarcboBox As CommandBarComboBoxOn Error Resume NextSet g_cmdbarcboBox = CommandBars.FindControl(Type:=msoControlDropdown, Tag:="MyList")ActiveWorkbook.Sheets(g_cmdbarcboBox.Text).ActivateEnd Sub '设置选择相应工作表后,出现在工具栏中的菜单Sub setMNUACCOUNTS()Call deleleteControlsOn Error GoTo Err_HandlerSet g_cmdbarMenu = g_cmdBar.Controls.Add(Type:=msoControlPopup, BEFORE:=2)g_cmdbarMenu.Caption = gcstrMNUACCOUNTSSet g_cmdbarBtn = g_cmdbarMenu.Controls.Add(Type:=msoControlButton)g_cmdbarBtn.Caption = "New Account"Set g_cmdbarBtn = g_cmdbarMenu.Controls.Add(Type:=msoControlButton)g_cmdbarBtn.Caption = "Delete account"Exit SubErr_Handler:ErrHandle ErrEnd Sub Sub setMNUSUPPLIERS()Call deleleteControlsOn Error GoTo Err_HandlerSet g_cmdbarMenu = g_cmdBar.Controls.Add(Type:=msoControlPopup, BEFORE:=2)g_cmdbarMenu.Caption = gcstrMNUSUPPLIERSSet g_cmdbarBtn = g_cmdbarMenu.Controls.Add(Type:=msoControlButton)g_cmdbarBtn.Caption = "New Supplier"Set g_cmdbarBtn = g_cmdbarMenu.Controls.Add(Type:=msoControlButton)g_cmdbarBtn.Caption = "Current data"Exit SubErr_Handler:ErrHandle ErrEnd Sub Sub setMNUCUSTOMERS()Call deleleteControlsOn Error GoTo Err_HandlerSet g_cmdbarMenu = g_cmdBar.Controls.Add(Type:=msoControlPopup, BEFORE:=2)g_cmdbarMenu.Caption = gcstrMNUCUSTOMERSSet g_cmdbarBtn = g_cmdbarMenu.Controls.Add(Type:=msoControlButton)g_cmdbarBtn.Caption = "New Customer"Set g_cmdbarBtn = g_cmdbarMenu.Controls.Add(Type:=msoControlButton)g_cmdbarBtn.Caption = "Outstanding parts"Exit SubErr_Handler:ErrHandle ErrEnd Sub Sub ErrHandle(ByVal objError As ErrObject)MsgBox objError.Description, vbCritical, objError.NumberCall wsDeleteMenusEnd Sub Sub runHelp()ActiveWorkbook.FollowHyperlink "http://www.excelperfect.com", NewWindow:=True, AddHistory:=TrueEnd Sub
最后,编写ThisWorkbook模块代码,以便在工作簿打开时执行创建工具栏的操作,在工作簿关闭时删除自定义工具栏。
Private Sub Workbook_Open()Call wsBuildMenusEnd Sub Private Sub Workbook_BeforeClose(Cancel As Boolean)Call wsDeleteMenusEnd Sub
至此,代码全部编写完成。保存后,关闭该工作簿。再重新打开工作簿,如果没有选择与创建工具栏菜单名称相同的工作表,则会出现下面的工具栏:
如果选择的复选框项目与创建工具栏菜单的工作表名相同,则会出现下面的工具栏:
创建自定义工具栏示例-
如何制作自定义工具栏
IE工具栏添加自定义按钮两种法
Excel工具栏的自定义及保存 ? VC爱好者 v3.0
java自定义监听器的示例代码
VB 用API创建动态菜单示例(含子菜单且能响应事件)
excel-vba应用示例之创建新的工作簿
如何创建自定义模块-帮助中心-Mtime时光网 1
在 PowerPoint 的演示文稿中创建自定义放映 - PowerPoint - Mic...
如何创建链接到自定义放映的目录幻灯片-联想问吧_有问题,来问吧!-联想中国(Lenovo ...
MDIForm 工具栏 与子窗口 工具栏 合并
CommandBar介绍-工具栏1
AutoCAD工具栏丢失怎么办?
看盘工具栏的妙用
苹果工具栏如何卸载
CommandBar介绍-工具栏2
VB- 工具栏、对话框
jsp_ajax示例
示例程序
教案示例
拍照示例
八门奇遁示例
电脑桌面工具栏里“链接”是什么意思
工具栏 Without MFC(非MFC)