首页 » 排名链接 » VBA代码在EXCEL菜单中添加自定义新项(代码菜单控件添加自定义)

VBA代码在EXCEL菜单中添加自定义新项(代码菜单控件添加自定义)

admin 2024-11-02 20:46:02 0

扫一扫用手机浏览

文章目录 [+]

在我之前的文章中讲到,我最初VBA是学习前辈的代码,前辈的文件响应代码就是通过菜单的自定义来实现的,今日我们也来谈谈自定义菜单的问题。
添加菜单可以用Add方法。

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

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

VBA代码在EXCEL菜单中添加自定义新项(代码菜单控件添加自定义) 排名链接
(图片来自网络侵删)

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

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

msoControlButton1命令按钮

msoControlEdit2文本框

msoControlDropdown3下拉列表控制框

msoControlComboBox4下拉组合控制框

msoControlPopup10弹出式控件

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

参数Parameter是可选的,对于内置控件,该参数用于容器应用程序运行命令。
对于自定义控件,可以使用该参数向Visual Basic过程传递信息,或用其存储控件信息。

参数Before是可选的,表示新控件在命令栏上位置的数字。
新控件将插入到该位置控件之前。
如果忽略该参数,控件将添加到指定命令栏的末端。

参数Temporary是可选的。
设置为True将使添加的菜单项为临时的,在关闭应用程序时删除。
默认值为False。

下面我们就一个实例来讲解如何添加菜单。
如下面的代码所示。

Sub MynzTools()

Dim myTools As CommandBarPopup

Dim myCap, myAct As Variant

Dim myid As Variant

Dim i As Byte

myCap = Array(\"VBA代码解决方案1\", \"VBA代码解决方案2\", \"VBA代码解决方案3\")

myAct = Array(\"myNz1\", \"myNz2\", \"myNz3\")

With Application.CommandBars(\"Worksheet menu bar\")

.Reset

Set myTools = .Controls.Add(Type:=msoControlPopup)

With myTools

.Caption = \"VBA学习\"

.BeginGroup = True

For i = 1 To 3

With .Controls.Add(Type:=msoControlButton)

.Caption = myCap(i - 1)

.OnAction = myAct(i - 1)

End With

Next

End With

End With

Set myTools = Nothing

End Sub

Sub MynzDelmyTools()

Application.CommandBars(\"Worksheet menu bar\").Reset

End Sub

Sub myNz1()

MsgBox \"欢迎学习VBA代码解决方案第一册\"

End Sub

Sub myNz2()

MsgBox \"欢迎学习VBA代码解决方案第二册\"

End Sub

Sub myNz3()

MsgBox \"欢迎学习VBA代码解决方案第三册\"

End Sub

代码解析:myTools过程使用Add方法在Excel工作表菜单栏中加一个标题为\"VBA学习\"的菜单项和3个子菜单。

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

第6,7行代码使用Array函数创建数组用于保存子菜单的名称,和菜单的动作

第9行代码,在添加菜单项前先使用Reset方法重置菜单栏以免重复添加菜单项。
Reset方法重置一个内置控件,恢复该控件原来对应的动作,并将各属性恢复成初始状态,

语法如下:expression.Reset

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

第10行代码,使用Add方法在Excel工作表菜单栏中添加菜单项。
因为在本例中将添加的是带有子菜单的菜单项,所以将参数Type设置为弹出式控件。

第12行代码,设定新添加菜单项的Caption属性为\"VBA学习\"。
Caption属性返回或设置命令栏控件的标题。

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

第14行到第18行代码,在\"VBA学习\"菜单项上添加3个子菜单并设置其Caption属性。
和相应的动作。

好了,我们看我们的运行效果:

运行前界面:

点击添加菜单:

点击\"VBA代码解决方案1\":弹出对话框效果。

上述代码中:

Sub MynzDelmyTools()

Application.CommandBars(\"Worksheet menu bar\").Reset

End Sub

是重置菜单,也就是说在退出前要重置一下菜单。

关于菜单内容还有一些内容,或许充实到结集后的文章中。
本篇的文章太长了。

今日内容回向:

1. 如何设置菜单?

2 如何让菜单响应不同的动作?

标签:

相关文章

互联网(费用开发互联网价目表软件)

关于开发APP,最受关注的问题就是费用问题了。我之前也谈到了开发APP的费用,但仍有许多人对此不太了解。有些朋友私信我,让我提供一...

排名链接 2025-02-10 阅读712 评论0