ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 3124|回复: 5

[分享] 自己自定义工具栏学了一段时间,这个是较为详细的,分享一下,自已也算收藏吧

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-6-7 23:33 | 显示全部楼层 |阅读模式
本帖已被收录到知识树中,索引项:UI界面定制

创建工具栏很简单,直接使用CommandBars集合的Add方法,除了需要指定Name属性之外,可以接受其它所有的默认属性值。可以通过Position属性指定工具栏显示的位置。
Position属性的值由msoBarPosition常数指定。




•msoBarLeft: 0,工具栏显示在工作表左边
•msoBarTop: 1,工具栏显示在工作表上边
•msoBarRight: 2,工具栏显示在工作表右边
•msoBarBottom: 3,工具栏显示在工作表下边
•msoBarFloating: 4,工具栏浮动显示
•msoBarMenuBar: 5,这个常数表示创建菜单栏,不用于创建工具栏
•msoBarPopup: 6,这个常数表示创建弹出菜单

例如下面的代码创建名称为“Custom Toolbar”的位于工作表区域上边的工具栏。
Set newTool = CommandBars.Add(Name:="Custom Toolbar", Position:=msoBarTop)



创建好CommandBar对象后,可以使用它的Controls集合的Add方法添加控件,也就是工具命令栏。
可以通过Add方法参数中的Type属性指定命令栏的类型。Type属性由msoControlType常数指定。




•msoControlButton:1,普通按钮类型
•msoControlEdit:2,编辑框类型
•msoControlDropdown:3,复合框类型,不能输入新项目
•msoControlComboBox :4,和DropDown一样的复合框类型,允许输入新项目
•msoControlPopup:10,弹出菜单

如果在Add方法中指定ID属性的值,可以创建内置命令栏,例如设置id:=3则创建“保存”命令栏,不需要知道OnAction属性,点击该命令栏将执行默认保存命令。
还可以设置命令栏的Style属性。Style属性由msoButtonStyle或msoComboStyle常数指定。
msoButtonStyle常数:




•msoButtonAutomatic:0,默认值,对于菜单栏,等于msoButtonIconAndCaption,对于工具栏,等于msoButtonIcon
•msoButtonCaption:2,只显示标题,忽略图标
•msoButtonIcon:1,在工具栏上只显示图标,在菜单栏上只显示标题
•msoButtonIconAndCaption:3,显示图标,并在图标右边显示标题
•msoButtonIconAndCaptionBelow:7,对于菜单栏,等同于msoButtonIconAndCaption,对于工具栏,在图标下方显示标题
•msoButtonWrapCaption:14 ,同msoButtonCaption类似,只是如果标题太长时分行显示

msoComboStyle常数:




•msoComboLabel:1,左边有标题
•msoComboNormal:0,没有标题

如果命令栏的Type属性设置为msoControlComboBox,该命令栏可以使用ComboBox控件的各种方法和属性,例如AddItem方法、Clear方法等。如果创建时设置了Caption属性为“请选择:”,则可以使用Controls(“请选择:”)来表示该复合框命令栏。例如下面的代码:
With CommandBars("Custom Toolbar").Controls("请选择:")下面是一个创建自定义工具栏的完整例子。


Sub CreateToolBar()    Dim newTool As CommandBar    Dim i As Integer     '如果发现有相同工具栏,删除该工具栏
   On Error Resume Next    CommandBars("Custom Toolbar").Delete   
On Error GoTo 0     '添加名称为“Custom Toolbar”的工具栏,并在工作表上方显示   
Set newTool = CommandBars.Add(Name:="Custom Toolbar", Position:=msoBarTop)     
With newTool  .Visible = True        
With .Controls.Add(Type:=msoControlButton)            
.Caption = "复制"            
.Style = msoButtonIconAndCaption           
.TooltipText = "复制文件"            
.FaceId = 18           
.OnAction = "HandleTool"        
End With        
With .Controls.Add(Type:=msoControlButton, ID:=3)         
  .Caption = "保存"           
.BeginGroup = True           
.Style = msoButtonIcon      
End With        
With .Controls.Add(Type:=msoControlEdit)
           .Caption = "输入:"            
           .BeginGroup = True           
            .Style = msoButtonIcon           
            .TooltipText = "在此输入数据"            
            .OnAction = "HandleText"        
     End With        
With .Controls.Add(Type:=msoControlComboBox)            
.Caption = "请选择:"            
.BeginGroup = True           
.Style = msoComboLabel           
.TooltipText = "请选择所需项目"           
.AddItem "Apple"           
.AddItem "Banana"           
.AddItem "Orange"           
.ListIndex = 1            
.OnAction = "HandleCombo"        
End With    End With
End Sub
Sub ExecuateCombo()   
With CommandBars("Custom Toolbar").Controls("请选择:")        
MsgBox .ListCount        
If .List(1) = "Apple" Then         
   .Execute        
End If   
End With
End Sub
Sub HandleCombo()   
Dim sCall As String    sCall = CommandBars.ActionControl.Text   
MsgBox "你选择了: " & sCall, vbInformationEnd Sub Sub HandleText()   
Dim sCall As String    sCall = CommandBars.ActionControl.Text   
MsgBox "你输入了: " & sCall, vbInformation
End Sub
Sub HandleTool()   
Dim sCall As String    sCall = CommandBars.ActionControl.Caption   
MsgBox "你点击了: " & sCall, vbInformation
End Sub
Sub RemoveToolBar()   
On Error Resume Next   
CommandBars("Custom Toolbar").Delete
End Sub


TA的精华主题

TA的得分主题

发表于 2013-6-7 23:44 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
谢谢分享!很不错资料!

TA的精华主题

TA的得分主题

发表于 2013-11-9 22:24 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2013-12-4 17:01 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2015-1-4 17:04 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2015-1-5 00:04 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-22 12:18 , Processed in 0.039443 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表