ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

难题: 这种DropDown的Commnad Bar control是怎么做出来的呢?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2004-9-17 04:06 | 显示全部楼层 |阅读模式
难题: 这种DropDown的Commnad Bar control是怎么做出来的呢? 附件这种Botton Drop Down的Control是怎么做出来的呢? 看了好多资料, 都没有找到解决办法 : ( 难道VBA只允许添加msoControlButton, msoControlEdit, msoControlDropdown, msoControlComboBox, msoControlPopup这5种control吗? 其他类型如msoControlSplitButtonPopup, msoControlButtonDropdown就实现不了吗? 还请大家帮忙讨论一下, 看能不能找到解决办法

TA的精华主题

TA的得分主题

 楼主| 发表于 2004-9-17 04:08 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2004-9-17 05:55 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

看看这个可否:

Sub Rt() CommandBars("Formatting").Reset End Sub

Sub Atest() Dim mybar As CommandBarControl, mycontrols1 As CommandBarButton, mycontrols2 As CommandBarButton Dim mycontrols3 As CommandBarButton, mycontrols4 As CommandBarButton Set mybar = CommandBars("Formatting").Controls.Add(Type:=msoControlSplitButtonPopup _ , ID:=386, Before:=1) mybar.TooltipText = "Hello!This is a test!" Set mycontrols1 = mybar.Controls.Add mycontrols1.Caption = "-----" mycontrols1.OnAction = "gotest" Set mycontrols2 = mybar.Controls.Add mycontrols2.Caption = "=====" Set mycontrols3 = mybar.Controls.Add mycontrols3.Caption = "+++++" Set mycontrols4 = mybar.Controls.Add mycontrols4.Caption = "******" End Sub Sub gotest() MsgBox "this is a test" End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2004-9-17 13:16 | 显示全部楼层

谢谢斑竹, 这种方法可以把类似的control添加进来.

但是有没有办法变成自己想要的FaceID呢?

CommandBarControl并没有FaceID的属性,

不能进行CopyFace和PasteFace操作

TA的精华主题

TA的得分主题

发表于 2004-9-17 13:49 | 显示全部楼层
以下是引用守柔在2004-9-17 5:55:00的发言:

看看这个可否:

Sub Rt() CommandBars("Formatting").Reset End Sub

Sub Atest() Dim mybar As CommandBarControl, mycontrols1 As CommandBarButton, mycontrols2 As CommandBarButton Dim mycontrols3 As CommandBarButton, mycontrols4 As CommandBarButton Set mybar = CommandBars("Formatting").Controls.Add(Type:=msoControlSplitButtonPopup _ , ID:=386, Before:=1) mybar.TooltipText = "Hello!This is a test!" Set mycontrols1 = mybar.Controls.Add mycontrols1.Caption = "-----" mycontrols1.OnAction = "gotest" Set mycontrols2 = mybar.Controls.Add mycontrols2.Caption = "=====" Set mycontrols3 = mybar.Controls.Add mycontrols3.Caption = "+++++" Set mycontrols4 = mybar.Controls.Add mycontrols4.Caption = "******" End Sub Sub gotest() MsgBox "this is a test" End Sub

移植到EXCEL中出现错误:

[此贴子已经被作者于2004-9-17 13:51:25编辑过]

难题: 这种DropDown的Commnad Bar control是怎么做出来的呢?

难题: 这种DropDown的Commnad Bar control是怎么做出来的呢?
OskHNIhu.gif

TA的精华主题

TA的得分主题

 楼主| 发表于 2004-9-17 13:53 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

没错啊 我试过了 不应该有错误的啊

各版本Office'格式'工具栏就是"Formatting" 而且ID也是唯一的

Btw, 我把ID换成401了

'* +++++++++++++++++++++++++++++++++++++++++++++ '* Created by 守柔@excelhome, 2004-9-17 5:55 '* Modified by IOOI, 2004-9-17 13:53 '* ----------------------------------------------------------------------- Sub Btest() Dim mybar As CommandBarControl, mycontrols1 As CommandBarButton, mycontrols2 As CommandBarButton Dim mycontrols3 As CommandBarButton, mycontrols4 As CommandBarButton Dim c1 As CommandBarButton Set mybar = CommandBars("Formatting").Controls.Add(Type:=msoControlSplitButtonPopup _ , ID:=401, Before:=1) mybar.TooltipText = "Hello!This is a test!" Set c1 = CommandBars.FindControl(Type:=msoControlButton) c1.CopyFace 'CommandBars("Formatting").Controls(1) Set mycontrols1 = mybar.Controls.Add mycontrols1.Caption = "-----" mycontrols1.OnAction = "gotest" mycontrols1.FaceId = 2 Set mycontrols2 = mybar.Controls.Add mycontrols2.Caption = "=====" mycontrols2.PasteFace Set mycontrols3 = mybar.Controls.Add mycontrols3.Caption = "+++++" mycontrols3.FaceId = 4 Set mycontrols4 = mybar.Controls.Add mycontrols4.Caption = "******" mycontrols4.PasteFace End Sub

[此贴子已经被作者于2004-9-17 14:17:01编辑过]
4hd8ok13.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2004-9-17 14:25 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
以下是引用IOOI在2004-9-17 13:16:00的发言:

谢谢斑竹, 这种方法可以把类似的control添加进来.

但是有没有办法变成自己想要的FaceID呢?

CommandBarControl并没有FaceID的属性,

不能进行CopyFace和PasteFace操作

旧话重提, 现在还没有完全实现自定义, 有办法吗?

TA的精华主题

TA的得分主题

发表于 2004-9-17 14:59 | 显示全部楼层

在EXCEL中是如下效果吗?

难题: 这种DropDown的Commnad Bar control是怎么做出来的呢?

难题: 这种DropDown的Commnad Bar control是怎么做出来的呢?

TA的精华主题

TA的得分主题

 楼主| 发表于 2004-9-17 15:29 | 显示全部楼层
是的 你试试先把其他的control删除, 看会不会影响到原来的颜色bar

TA的精华主题

TA的得分主题

发表于 2004-9-18 05:59 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
以下是引用IOOI在2004-9-17 13:16:00的发言:

谢谢斑竹, 这种方法可以把类似的control添加进来.

但是有没有办法变成自己想要的FaceID呢?

CommandBarControl并没有FaceID的属性,

不能进行CopyFace和PasteFace操作

诚如楼主所言,其实从写代码时就存在以下几个问题:

一是ID号只能作用于TYPE为msoControlSplitButtonPopup(INDEX为13 的部分ID),如以下ID:

Caption=边框颜色(&B)Type=13ID=2628

Caption=插入形状(&N)Type=13ID=6925

Caption=底纹色(&S)Type=13ID=2947

Caption=键盘语言(&K)Type=13ID=3659

Caption=接受修订(&A)Type=13ID=6240

Caption=拒绝修订/删除批注(&R)Type=13ID=6243

Caption=三维颜色(&3)Type=13ID=1694

Caption=填充颜色(&F)Type=13ID=1691

Caption=突出显示(&H)Type=13ID=340

Caption=底纹色(&S)Type=13ID=2947

Caption=下划线(&U)Type=13ID=3962

Caption=线条颜色(&L)Type=13ID=1692

Caption=新建批注(&W)Type=13ID=6969

Caption=行距(&L)Type=13ID=5734

Caption=阴影颜色(&S)Type=13ID=1693

Caption=中文简繁转换(&R)...Type=13ID=4026

Caption=字符缩放(&C)Type=13ID=386

Caption=字体颜色(&F)Type=13ID=401

至于FACEID,肯定是不行的,一则FACEID、copyface\pasteface仅作用于CommandBarButton 。另外也可从工具自定义右击某一该类型按钮命令可出现右键菜单除CAPTION属性外其均泛白也可知其不支持。

楼主可否考虑其它变通的办法。

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-15 14:43 , Processed in 0.049742 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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