|
楼主 |
发表于 2009-3-22 22:29
|
显示全部楼层
第7部分 菜单和工具栏
技巧93 在工具栏上添加下拉列表框
如果需要在工具栏中添加类似“字体”这样的下拉列表控制框控件,那么可以使用下面的代码。- #001 Sub AddDropdown()
- #002 Dim myDropdown As Object
- #003 Dim myCap As Variant
- #004 Dim i As Integer
- #005 myCap = Array("基础应用", "VBA程序开发", "函数与公式")
- #006 Call DeleteButton
- #007 Set myDropdown = Application.CommandBars("Formatting").Controls _
- #008 .Add(Type:=msoControlDropdown, Before:=1)
- #009 With myDropdown
- #010 .Caption = "请选择版块"
- #011 .OnAction = "myOnA"
- #012 .Style = msoComboNormal
- #013 For i = 0 To UBound(myCap)
- #014 .AddItem myCap(i)
- #015 Next
- #016 .ListIndex = 1
- #017 End With
- #018 End Sub
- #019 Sub DeleteButton()
- #020 With Application.CommandBars("Formatting").Controls(1)
- #021 If .Caption = "请选择版块" Then .Delete
- #022 End With
- #023 End Sub
- #024 Sub myOnA()
- #025 Dim myList As Byte
- #026 myList = Application.CommandBars("Formatting") _
- #027 .Controls(1).ListIndex
- #028 ActiveWorkbook.FollowHyperlink _
- #029 Address:="http://club.excelhome.net/forum-" & myList & "-1.html", NewWindow:=True
- #030 End Sub
复制代码 代码解析:
AddDropdown过程使用Add方法在工具栏中添加下拉列表控制框控件。
第5行代码使用Array函数创建一个数组用于保存下拉列表控制框控件加载列表项所需的元素。
第6行代码先运行第19行到第23行的DeleteButton过程删除可能存在的下拉列表控制框控件,以免重复添加。DeleteButton过程判断工具栏中第一个控件的Caption属性是否为“请选择版块”,如果是则删除该下拉列表控制框控件。
第7、8行代码使用Add方法在工具栏中添加下拉列表控制框控件。应用于 CommandBarControls 对象的Add方法请参阅技巧79 。示例中将其参数Type设置为msoControlDropdown,添加的就是下拉列表控制框控件。
第10行代码设置下拉列表控制框控件的Caption属性,应用于 CommandBarControls 对象的Caption属性返回或设置指定命令栏控件的题注文字,也可作为默认的“屏幕提示”显示。
第11行代码设置改变下拉列表控制框控件的内容时要运行的过程为第24行到第30行代码的myOnA过程。myOnA过程根据下拉列表控制框控件的ListIndex属性值打开Excel Home论坛中相应的版块。
第12行代码设置下拉列表控制框控件的样式。Style属性返回或设置命令栏控件的显示方式,该属性值可设置为表格所列MsoComboStyle常量之一。
第13行到第15行代码使用AddItem方法将数组中的元素添加到下拉列表控制框控件的列表项中。
第16行代码将下拉列表控制框控件的ListIndex属性设置为1,使其显示第一条列表项。
运行AddDropdown过程,工具栏如图所示。
|
|