在菜单中开始一个命令组 如果“自定义”对话框尚未打开,将鼠标指到“视图”菜单的“工具栏”上,然后单击“自定义”。 使用Visual Basic 用户需使用CommandBarControls集合的Add方法来给CommandBar对象添加新的菜单项,该对象表示某个菜单或子菜单。要添加内置命令,可以使用Add方法的参数Id指定该命令的ID编号。在下面这个例子在“Custom Menu Bar”菜单栏的 “Quick Tools”菜单里添加了“Spelling”命令。 Set mySpell = CommandBars("Custom Menu Bar").Controls("Quick Tools") _ .Controls.Add(Id:=2) 要对如何确定Microsoft Office 应用程序的内置命令的ID编号做进一步了解,请参考本章后面的“菜单项和菜单栏控件ID编号”一节的内容。 要添加一条菜单命令,可以先添加一条新的菜单项,然后设置OnAction 属性来指定点击该项时运行的Visual Basic程序。设置Add 法的参数Type为msoControlButton指出该菜单项是一条命令。在下面这个Microsoft Excel例子里在工作表工具栏的“文件”菜单中添加了一个Open Database菜单项。当用户点击该菜单项时,Microsoft Excel 运行Visual Basic程序OpenDatabaseProc。Open Database直接出现在File菜单中Close命令的上面。 Set databaseItem = CommandBars("Worksheet Menu Bar").Controls("File") _ .Controls.Add(Type:=msoControlButton, Before:=3) With databaseItem .Caption:="Open Database" .OnAction:="OpenDatabaseProc" End With 用户可以在Visual Basic 中设置表示菜单命令的对象它的许多属性,以此修改命令的外观。要做更进一步了解,请参考“帮助”中的Style属性和FaceID 属性,以及CommandBarButtion对象的其他属性和方法的帮助主题。 设置开始一组菜单项的菜单项(也就是说,前面有一线条的命令项),需要设置表示菜单项的CommandBarButton、CommandBarPopup或者CommandBarComboBox对象的BeginGroup属性为True(真)。要去除该线条,则设置属性BeginGroup为False(假)。使用Controls(Index) 来返回一个表示该项的对象,此处的Index是指菜单项的标题或索引号。下面的例子在“文件”菜单的Open Database 命令(在上面的例子里添加的)前面添加了一条分隔线。 Set databaseItem = CommandBars("Worksheet Menu Bar").Controls("File") _ .Controls("Open Database") databaseItem.BeginGroup = True 添加和修改快捷菜单 用户可以Microsoft Access中使用“自定义”对话框,或者在Microsoft Excel 中使用Visual Basic 来添加和修改自定义快捷菜单。在Microsoft Access、Word和PowerPoint中,用户还可以使用“自定义”对话框来修改内置快捷菜单(在Microsoft Access还可以是自定义快捷菜单)。 在Microsoft Access中,用户可以给报表、窗体以及窗体上的控件指定快捷菜单;在对象上单击鼠标右键,随时就可以显示出相应的快捷菜单。要了解在Microsoft Access报表和窗体中使用快捷菜单的内容,请参考“Building Applications with Microsoft Access 97”的第一章。 Microsoft Excel提供事件-BeforeRightClick-可以通过修改内置快捷菜单或显示自定义快捷菜单来响应它。 注释 在应用程序窗口内单击鼠标右键时,Word和PowerPoint不会显示自定义快捷菜单。 使用“自定义”对话框 在Microsoft Access 中,“自定义”对话框提供了添加自定义快捷菜单的一种便利方法。 在Microsoft Access中添加快捷菜单 如果“自定义”对话框尚未打开,将鼠标指到“视图”菜单中的“工具栏”上,然后单击“自定义”。 单击“属性”,显示“工具栏属性”对话框。 在Microsoft Access、Word和PowerPoint中,用户可以使用“自定义”对话框修改内置快捷菜单。(在Microsoft Access中,还可以用这种办法修改自定义快捷菜单。)要添加子菜单或快捷菜单,可以按照本节前面“添加子菜单”内给出的步骤来做。要添加命令,可以按照本节前面“添加命令和命令分组”内给出的步骤来做。不要忘记在“工具栏”一栏内“快捷菜单”旁边的复选框中打上对钩,这样才能显示出包含打开“自定义”对话框时所有有效快捷菜单的工具栏。 使用Visual Basic 用户可以使用CommandBars集合的Add方法来创建新的快捷菜单;将Add方法的参数Position设置为msoBarPopup,以此指出所创建的CommandBar对象应显示为快捷菜单。下面的例子创建了一个名为“Shortcuts1”的新快捷菜单。 Set cstm = CommandBars.Add(Name:="Shortcuts1", Position:=msoBarPopup, _ MenuBar:=False, Temporary:=False) 在Microsoft Excel、Word和PowerPoint中,必须使用Visual Basic来创建新的快捷菜单。而在Microsoft Access中,既可以使用Visual Basic,也可以使用“自定义”对话框。 要在任何Microsoft Office应用程序中用Visual Basic修改自定义或内置快捷菜单,可以采用和前面章节讲述的使用Visual Basic向菜单里添加子菜单或命令相同的技术。使用CommandBars(name) 返回表示该快捷菜单的一个CommandBar对象,这里的name是指快捷菜单的名字。于是用户可以添加或修改任何在CommandBar对象中有效的Controls集合里的元素。 删除菜单组件 用户可以从菜单中删除内置或自定义的菜单项,可以从菜单栏中删除内置或自定义的菜单,还可以删除自定义菜单栏。但是要注意,即使可以删除快捷菜单和内置菜单栏上的所有项,还是不能删除快捷菜单或内置菜单栏本身。 删除内置菜单组件可以帮助用户根据需要定制自己的Visual Basic应用程序。例如,用户可能想从菜单中删除某条内置命令,并且用一个自定义命令的版本来替换它,该命令可为用户完成特殊的任务。用户也可能要删除某个菜单项以简化界面或者降低无经验者选择使用不适当命令的可能性。 注释 用户可以恢复已经删除的内置菜单栏、菜单或菜单项。但是,不能恢复自定义的菜单栏、菜单或菜单项;必须重新创建它们。 使用“自定义”对话框 打开“自定义”对话框的情况下,用户可以删除任何菜单组件。 删除菜单系统组件 如果“自定义”对话框尚未打开,将鼠标指到“视图”菜单中的“工具栏”上,然后单击“自定义”。 使用Visual Basic 用户可以使用Delete方法来删除自定义菜单栏、自定义或内置下拉菜单或子菜单以及自定义或内置菜单项。但是不能删除内置菜单栏或快捷菜单。 以下Microsoft Excel中的例子删除了绘图菜单栏里的“编辑”菜单。 CommandBars("Chart Menu Bar").Controls("Edit").Delete 以下的例子删除名为“Custom Menu Bar”的自定义菜单栏。 CommandBars("Custom Menu Bar").Delete 要了解如何恢复已删除的内置菜单组件,请参考下面一节的内容。 恢复内置菜单组件 用户能够恢复已经被删除的内置菜单栏、菜单或菜单项。但是,不能恢复已经删除的自定义菜单栏、菜单或菜单项;必须重建它们。 使用“自定义”对话框 用户可以使用“自定义”对话框来再次恢复内置菜单或子菜单中各个原始的内置菜单项。同样地,在恢复内置菜单栏的同时在该菜单栏中的所有菜单和子菜单也被重新恢复。 恢复内置菜单 如果“自定义”对话框尚未打开,用鼠标指到“视图”菜单中的“工具栏”上,然后单击“自定义”。 |