用VBA代码处理菜单和工具栏之四
复制菜单和工具栏
复制现有工具栏需要VBA代码。可以使用Add方法创建一个与要复制的工具栏类型相同的工具栏,然后使用CommandBarControl的Copy方法将源工具栏上的每个命令按钮复制到新工具栏上。下面的函数将以这种方式复制工具栏:
Rigcbname参数是指复制的源工具栏,strNewCBName参数是指新工具栏的名称,可选参数blnShowBar决定新工具栏是否显示。
函数CBCopyCommandBar(strOrigCBName作为字符串,_
strNewCBName作为字符串,_
可选blnShowBar As Boolean = False)As Boolean
此过程复制strOrigCBName中命名的命令栏
参数添加到strNewCBName参数中指定的新命令栏。
Dim原始命令栏
将内容复制为命令栏
Dim ctlCBarControl作为CommandBarControl
Dim lngBarType As Long
出错时转到CBCopy_Err
set CBR original = command bars(strOrigCBName)
lngBarType = cbrOriginal。类型
选择事例lngBarType
Case msoBarTypeMenuBar
设置cbrCopy = CommandBars。Add(名称:=strNewCBName,位置:=msoBarMenuBar)
Case msoBarTypePopup
设置cbrCopy = CommandBars。Add(名称:=strNewCBName,位置:=msoBarPopup)
其他情况
设置cbrCopy = CommandBars。添加(名称:=strNewCBName)
结束选择
将控件复制到新命令栏。
对于cbrOriginal中的每个ctlCBarControl。控制
ctlCBarControl。复制cbrCopy
下一个ctlCBarControl
显示新命令栏。
如果blnShowBar = True,则
如果cbrCopy。Type = msoBarTypePopup Then
cbrCopy。ShowPopup
其他
cbrCopy。可见=真
如果…就会结束
如果…就会结束
CBCopyCommandBar = True
CBCopy_End:
退出功能
CBCopy_Err:
CBCopyCommandBar = False
恢复CBCopy_End
结束功能
注意:
1.此函数的strNewCBName参数不能与现有工具栏同名;
2.如果复制一个弹出菜单栏,并将blnShowBar参数设置为TRUE,则当运行该函数时,弹出菜单栏将显示在当前鼠标位置。有关显示弹出菜单栏的更多信息和说明,请参考Microsoft Office Visual Basic参考帮助中的“显示弹出菜单栏”索引。
0条评论