|
有不少网友希望对菜单进行权限控制,同时也希望根据不同的权限来创建不同的菜单,那如何使用代码创建菜单及工具栏呢
问题详述
有时需要让应用程序的用户可以自己添加快捷工具栏,那么如何完全使用代码创建一个完整的菜单或工具栏呢?
专家解答
在Access VBA中,所有的命令栏(系统内置、自定义的)都包含在CommandBars集合中,可以通过访问该集合相关属性和方法来用VBA代码添加新的菜单工具栏,下面的示例过程用来创建一个新的工具栏,并在该工具栏上新建一个菜单(包含两个菜单项)、一个工具栏按钮,两个菜单执行的都是一个自定义的过程“Showmessage”(参看问题:如何为菜单设置执行宏或事件),工具栏按钮则执行“宏1”。
Public Sub AddNewMenu()
'******添加新的工具栏和菜单**********
Dim newBar As CommandBar
Dim NewControl, NewMenu ' As Control
Dim i As Integer
'新增一个工具栏
Set newBar = CommandBars.Add("newtools", msoBarTop)
newBar.Visible = True
'在新工具栏上新增一个菜单位
Set NewMenu = newBar.Controls.Add(10)
NewMenu.Caption = "新菜单"
'在新菜单上新增两个按钮
Set NewControl = NewMenu.Controls.Add(1)
NewControl.Caption = "新菜单2"
NewControl.TooltipText = "新菜单2"
NewControl.Style = msoButtonCaption
'菜单执行过程"Showmessage"
NewControl.
Set NewControl = NewMenu.Controls.Add(1)
NewControl.Caption = "新菜单3"
NewControl.TooltipText = "新菜单3"
NewControl.Style = msoButtonCaption
NewControl.
'在工具栏上添加一个按钮,其所在操作为执行宏“宏1”
Set NewControl = newBar.Controls.Add(1)
NewControl.Caption = "新工具栏按钮"
NewControl.Style = msoButtonCaption
NewControl.
End Sub
也可以直接添加一个菜单栏,修改以上过程中的这句:
Set newBar = CommandBars.Add("newtools", msoBarTop)
改为:
Set newBar = CommandBars.Add("newMenu", msoBarTop,MenuBar:=true)
专家点评
用VBA创建菜单工具栏,可以提供给应用程序的最终用户一个自定义快捷方式的途径。 |
|