ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助]自定义菜单工具栏加载ImageList储藏的图标

[复制链接]

TA的精华主题

TA的得分主题

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

在UserForm1里,ImageList里储藏着待加载的4个自定义图标(不是系统的FaceId图标),如何加载到自定义的菜单工具栏上?

MyPopup.Controls.Add(Type:=msoControlButton).Button.FaceId = 1023
MyBars.Controls.Add(Type:=msoControlButton) .FaceId =1023

此2句的代码要如何修改?

Sub Menu_Currency()   '个性化菜单设置
  On Error Resume Next
  Dim Popup(5)  '建立新菜单(附加于默认菜单上)
  Dim Button As CommandBarControl
  Set Popup(0) = Application.CommandBars("Worksheet Menu Bar")
      Popup(0).Visible = True
     
  Popup(1).ImageList = ImageList1 '连接图标
  Popup(1).TextAlignment = tbrTextAlignBooton '图标显示方式

  Set Popup(1) = Popup(0).Controls.Add(Type:=msoControlPopup)
      Popup(1).Caption = "【记账凭证】 (&R)"
      Call MyButton(Popup(1), "凭证保存", 1023, "CreatePZ", True)
      Call MyButton(Popup(1), "凭证查询", 172, "FindPZ", True)
      Call MyButton(Popup(1), "凭证修改", 1020, "ReworkPZ", True)
      Call MyButton(Popup(1), "凭证删除", 644, "DeletePZ", True)
      Popup(1).BeginGroup = True

End Sub

Sub MyButton(MyPopup, Caption As String, FaceId As Integer, OnAction As String, BeginGroup As String)
  Set Button = MyPopup.Controls.Add(Type:=msoControlButton)
      Button.Caption = Space(5) & Caption
      Button.FaceId = FaceId
      Button.OnAction = OnAction
      Button.BeginGroup = BeginGroup
End Sub

Sub MyToolSet()      '自定义工具栏模块
  On Error Resume Next
  Dim MyBar As CommandBar
  Dim BarCoB As CommandBarComboBox
  Application.CommandBars("ZBSMenu").Delete
  Set MyBar = Application.CommandBars.Add("ZBSMenu", , False, True)
      MyBar.Position = msoBarTop
      MyBar.Protection = msoBarNoMove
      MyBar.Visible = True
      Call ZDYTool(MyBar, 1023, "保存", "CreatePZ", True, msoButtonIconAndCaption)
      Call ZDYTool(MyBar, 172, "查询", "FindPZ", True, msoButtonIconAndCaption)
      Call ZDYTool(MyBar, 1020, "修改", "ReworkPZ", True, msoButtonIconAndCaption)
      Call ZDYTool(MyBar, 644, "删除", "DeletePZ", True, msoButtonIconAndCaption)
      Call ZDYTool(MyBar, 601, "清空", "ClearPZ", True, msoButtonIconAndCaption)
  Set MyBar = Nothing
End Sub

Sub ZDYTool(MyBars, FaceId As Integer, Caption As String, OnAction As String, BeginGroup As Boolean, Style As Long)
   With MyBars.Controls.Add(Type:=msoControlButton)
      .FaceId = FaceId
      .Caption = Caption
      .OnAction = OnAction
      .BeginGroup = BeginGroup
      .Style = Style
   End With
End Sub


xIfwCJoe.rar (11.73 KB, 下载次数: 182)
[此贴子已经被作者于2007-7-28 15:43:18编辑过]

点评

知识树内容索引:3楼、11楼  发表于 2013-11-2 21:33

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-7-28 22:27 | 显示全部楼层

MyPopup.Controls.Add(Type:=msoControlButton).Button.FaceId = 1023
MyBars.Controls.Add(Type:=msoControlButton) .FaceId =1023

此2句的代码要如何修改?

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-7-31 11:35 | 显示全部楼层

Application.CommandBars("....").Controls(i).PasteFace

这一句不知道是怎么加进,还请版主修改1楼的自定工具栏和菜单,谢谢

TA的精华主题

TA的得分主题

发表于 2007-7-31 13:41 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
还是现成的好!

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-8-1 17:16 | 显示全部楼层

Sub MyButton(MyPopup, Caption As String, FaceId As Integer, OnAction As String, BeginGroup As String)
  Set Button = MyPopup.Controls.Add(Type:=msoControlButton)
      Button.Caption = Space(5) & Caption
      Button.FaceId = FaceId
      Button.OnAction = OnAction
      Button.BeginGroup = BeginGroup
End Sub

Sub ZDYTool(MyBars, FaceId As Integer, Caption As String, OnAction As String, BeginGroup As Boolean, Style As Long)
   With MyBars.Controls.Add(Type:=msoControlButton)
      .FaceId = FaceId
      .Caption = Caption
      .OnAction = OnAction
      .BeginGroup = BeginGroup
      .Style = Style
   End With
End Sub

是在这里加的吗?我晕了,帮我修改一下。

自定义的图标丰富些,所以喜欢尝试一下。

TA的精华主题

TA的得分主题

发表于 2007-7-30 21:41 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

传个例子,参考一下:

基本方法是辅助一IMAGE对象

(1)读图到Image1

Image1.Picture = ImageList1.ListImages(i).ExtractIcon

或Image1.Picture = ImageList1.ListImages(i).Picture

(2)复制图像

Image1.Copy

(3)粘贴图像到工具(菜单)项

Application.CommandBars("....").Controls(i).PasteFace

TA的精华主题

TA的得分主题

发表于 2007-7-31 14:10 | 显示全部楼层
QUOTE:
以下是引用yxy博在2007-7-31 13:41:02的发言:
还是现成的好!

深切同感.

也许是懒人自慰,自定义菜单的图标本身就有很多限制,只能是BMP格式,大小也要合适,在VBA下实现起来还要反复调试...

真的不划算.

TA的精华主题

TA的得分主题

发表于 2007-7-31 14:12 | 显示全部楼层
QUOTE:
以下是引用zbs112在2007-7-31 11:35:49的发言:

Application.CommandBars("....").Controls(i).PasteFace

这一句不知道是怎么加进,还请版主修改1楼的自定工具栏和菜单,谢谢

省略号部分就是菜单或工具栏的名子

附件例子进入设计状态就可以看到Imagelist控件

TA的精华主题

TA的得分主题

发表于 2013-11-2 21:27 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
下载学习,谢谢

TA的精华主题

TA的得分主题

发表于 2013-11-2 21:29 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-4-27 20:16 , Processed in 0.042282 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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