Excel VBA常用技巧 第07章 菜单和工具栏.docx

上传人:b****2 文档编号:2239542 上传时间:2022-10-28 格式:DOCX 页数:36 大小:606.66KB
下载 相关 举报
Excel VBA常用技巧 第07章 菜单和工具栏.docx_第1页
第1页 / 共36页
Excel VBA常用技巧 第07章 菜单和工具栏.docx_第2页
第2页 / 共36页
Excel VBA常用技巧 第07章 菜单和工具栏.docx_第3页
第3页 / 共36页
Excel VBA常用技巧 第07章 菜单和工具栏.docx_第4页
第4页 / 共36页
Excel VBA常用技巧 第07章 菜单和工具栏.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

Excel VBA常用技巧 第07章 菜单和工具栏.docx

《Excel VBA常用技巧 第07章 菜单和工具栏.docx》由会员分享,可在线阅读,更多相关《Excel VBA常用技巧 第07章 菜单和工具栏.docx(36页珍藏版)》请在冰豆网上搜索。

Excel VBA常用技巧 第07章 菜单和工具栏.docx

ExcelVBA常用技巧第07章菜单和工具栏

VBA常用技巧

目录

VBA常用技巧1

第7章菜单和工具栏2

技巧1在菜单中添加菜单项2

技巧2在菜单栏指定位置添加菜单5

技巧3屏蔽和删除工作表菜单7

技巧4改变系统菜单的操作8

技巧5定制自己的系统菜单9

技巧6改变菜单按钮图标15

技巧7右键快捷菜单增加菜单项16

技巧8自定义右键快捷菜单17

技巧9使用右键菜单制作数据有效性20

技巧10禁用工作表右键菜单22

技巧11创建自定义工具栏23

技巧12自定义工具栏按钮图标26

技巧13自定义工作簿图标27

技巧14移除工作表的最小最大化和关闭按钮28

技巧15在工具栏上添加下拉列表框29

技巧16屏蔽工作表的复制功能31

技巧17禁用工具栏的自定义32

技巧18屏蔽所有的命令栏35

技巧19恢复Excel的命令栏36

第7章菜单和工具栏

技巧1在菜单中添加菜单项

在Excel工作表的菜单中可以添加新的菜单项和子菜单,如下面的代码所示。

#001SubmyTools()

#002DimmyToolsAsCommandBarPopup

#003DimmyCapAsVariant

#004DimmyidAsVariant

#005DimiAsByte

#006myCap=Array("基础应用","VBA程序开发","函数与公式","图表与图形","数据透视表")

#007myid=Array(281,283,285,287,292)

#008WithApplication.CommandBars("Worksheetmenubar")

#009.Reset

#010SetmyTools=.Controls("帮助(&H)").Controls.Add(Type:

=msoControlPopup,Before:

=1)

#011WithmyTools

#012.Caption="ExcelHome技术论坛"

#013.BeginGroup=True

#014Fori=1To5

#015With.Controls.Add(Type:

=msoControlButton)

#016.Caption=myCap(i-1)

#017.FaceId=myid(i-1)

#018.OnAction="myC"

#019EndWith

#020Next

#021EndWith

#022EndWith

#023SetmyTools=Nothing

#024EndSub

代码解析:

myTools过程使用Add方法在Excel工作表菜单栏中的“帮助”菜单中添加一个标题为“ExcelHome技术论坛”的菜单项和5个子菜单。

第2行到第5行代码声明变量类型。

第6、7行代码使用Array函数创建两个数组用于保存子菜单的名称和图标ID。

第9行代码,在添加菜单项前先使用Reset方法重置菜单栏以免重复添加菜单项。

Reset方法重置一个内置控件,恢复该控件原来对应的动作,并将各属性恢复成初始状态,语法如下:

expression.Reset

参数expression 是必需的,返回一个命令栏或命令栏控件对象。

第10行代码,使用Add方法在Excel工作表菜单栏中的“帮助”菜单中添加菜单项。

Add方法应用于CommandBarControls对象时,新建一个CommandBarControl对象并添加到指定命令栏上的控件集合,语法如下:

expression.Add(Type,Id,Parameter,Before,Temporary)

参数expression 是必需的,返回一个CommandBarControls对象,代表命令栏中的所有控件。

参数Type是可选的,添加到指定命令栏的控件类型,可以为表格791所列的MsoControlType常数之一。

常数

控件类型

msoControlButton

1

命令按钮

msoControlEdit

2

文本框

msoControlDropdown

3

下拉列表控制框

msoControlComboBox

4

下拉组合控制框

msoControlPopup

10

弹出式控件

表格791MsoControlType常数

因为在本例中将添加的是带有子菜单的菜单项,所以将参数Type设置为弹出式控件。

参数Id是可选的,标识整数。

如果将该参数设置为1或者忽略,将在命令栏中添加一个空的指定类型的自定义控件。

参数Parameter是可选的,对于内置控件,该参数用于容器应用程序运行命令。

对于自定义控件,可以使用该参数向VisualBasic过程传递信息,或用其存储控件信息。

参数Before是可选的,表示新控件在命令栏上位置的数字。

新控件将插入到该位置控件之前。

如果忽略该参数,控件将添加到指定命令栏的末端。

本例中将Before参数设置为1,菜单项添加到“帮助”菜单的顶端。

参数Temporary是可选的。

设置为True将使添加的菜单项为临时的,在关闭应用程序时删除。

默认值为False。

第12行代码,设定新添加菜单项的Caption属性为“ExcelHome技术论坛”。

Caption属性返回或设置命令栏控件的标题。

第13行代码,设置新添加菜单项的BeginGroup属性为True,分组显示。

第14行到第19行代码,在“ExcelHome技术论坛”菜单项上添加五个子菜单并设置其Caption属性、FaceId属性和OnAction属性。

FaceId属性设置出现在菜单标题左侧的图标,以数字表示,一个数字代表一个内置的图标。

OnAction属性设置一个VBA的过程名,该过程在用户单击子菜单时运行,本例中设置为下面的过程。

#001PublicSubmyC()

#002MsgBox"您选择了:

"&Application.CommandBars.ActionControl.Caption

#003EndSub

代码解析:

myC过程是单击新添加子菜单所运行过程,为了演示方便在这里只使用MsgBox函数显示所其Caption属性。

删除新添加的菜单项及子菜单的代码如下所示。

#001SubDelmyTools()

#002Application.CommandBars("Worksheetmenubar").Reset

#003EndSub

代码解析:

DelmyTools过程使用Reset方法重置菜单栏,删除添加的菜单项及子菜单。

为了在打开工作簿时自动添加菜单项,需要在工作簿的Activate事件中调用myTools过程,如下面的代码所示。

#001PrivateSubWorkbook_Activate()

#002CallmyTools

#003EndSub

为了在关闭工作簿时删除新添加的菜单项,还需要在工作簿的Deactivate事件中调用DelmyTools过程,如下面的代码所示。

#001PrivateSubWorkbook_Deactivate()

#002CallDelmyTools

#003EndSub

如果希望这个菜单为所有工作簿使用,那么就应该在工作簿的Open事件中调用myTools过程,在BeforeClose事件中调用DelmyTools过程。

运行myTools过程,将在Excel工作表菜单栏中的“帮助”菜单中添加一个名为“ExcelHome技术论坛”的菜单项及五个子菜单,如图791所示。

图791在“帮助”菜单中添加菜单项及子菜单

技巧2在菜单栏指定位置添加菜单

除了可以在工作表菜单中添加菜单项外,还可以在工作表菜单栏的指定位置添加菜单,如下面的代码所示。

#001SubAddNewMenu()

#002DimHelpMenuAsCommandBarControl

#003DimNewMenuAsCommandBarPopup

#004WithApplication.CommandBars("Worksheetmenubar")

#005.Reset

#006SetHelpMenu=.FindControl(ID:

=.Controls("帮助(&H)").ID)

#007IfHelpMenuIsNothingThen

#008SetNewMenu=.Controls.Add(Type:

=msoControlPopup)

#009Else

#010SetNewMenu=.Controls.Add(Type:

=msoControlPopup,_

#011Before:

=HelpMenu.Index)

#012EndIf

#013WithNewMenu

#014.Caption="统计(&S)"

#015With.Controls.Add(Type:

=msoControlButton)

#016.Caption="输入数据(&D)"

#017.FaceId=162

#018.OnAction=""

#019EndWith

#020With.Controls.Add(Type:

=msoControlButton)

#021.Caption="汇总数据(&T)"

#022.FaceId=590

#023.OnAction=""

#024EndWith

#025EndWith

#026EndWith

#027SetHelpMenu=Nothing

#028SetNewMenu=Nothing

#029EndSub

代码解析:

AddNewMenu过程使用Add方法在工作表“帮助”菜单前添加一个标题为“统计”的菜单和两个菜单项。

第6行代码,使用FindControl方法在工作表菜单栏中查找“帮助”菜单。

应用于CommandBars对象的FindControl方法返回一个符合指定条件的CommandBarControl对象。

语法如下:

expression.FindControl(Type,Id,Tag,Visible,Recursive)

参数expression是必需的,返回一个CommandBars对象。

参数Type是可选的,要查找控件的类型。

参数Id是可选的,要查找控件的标识符。

参数Tag是可选的,要查找控件的标记值。

参数Visible是可选,如果该值为True,那么只查找屏幕上显示的命令栏控件。

默认值为False。

参数Recursive是可选的,如果该值为True,那么将在命令栏及其全部弹出式子工具栏中查找。

此参数仅应用于CommandBar对象。

默认值为False。

如果没有控件符合搜索条件,那么FindControl方法返回Nothing。

第7行到第12行代码,如果工作表菜单栏中存在“帮助”菜单,将“统计”菜单添加到“帮助”菜单之前,否则添加到工作表菜单栏末尾。

第12行到第25行代码,在“统计”菜单中添加两个子菜单并设置其各种属性。

运行AddNewMenu过程,将在工作表菜单栏的“帮助”菜单之前添加一个“统计”菜单,如图801所示。

图801在工作表菜单栏中添加菜单

技巧3

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1