ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

EH搜索     
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
Excel不给力? 何不试试FoxTable! Excel 2016函数公式学习大典 Office知识技巧免费学 打造核心竞争力的职场宝典
300集Office 2010微视频教程 Tableau-数据可视化工具 精品推荐-800套精选PPT模板,点击获取 ExcelHome出品 - VBA代码宝免费下载
你的Excel 2010实战技巧学习锦囊 欲罢不能, 过目难忘的 Office 新界面 Excel VBA经典代码实践指南
查看: 230|回复: 10

[求助] 多表中具有相同功能命令按钮能否共用一套代码?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-2-13 15:05 | 显示全部楼层 |阅读模式
各位老师:
       一个工作簿的多个工作表内,相同位置有不同的数据。
       普通按钮在多个工作表内可以共享一套存放在模块中的代码。
       但使用窗体命令按钮时,代码只能放在工作表内,且难以共享代码,最起码是我还不会。
       求助各位老师,给我科普一下:这个问题能不能解决,或者协助解决此问题!
预谢!


详见附件。附件中举了个最简单的例子,请参照解决。预谢!

新建 Microsoft Excel 工作表.rar (12 KB, 下载次数: 6)

TA的精华主题

TA的得分主题

发表于 2020-2-13 15:33 | 显示全部楼层
Sub CommandButton1_Click()
    求和
End Sub
求和为模块里的 通用过程

TA的精华主题

TA的得分主题

发表于 2020-2-13 15:36 | 显示全部楼层
打开vba面板,在“ThisWorkbook”上双击两下,加入以下代码:
  1. Private Sub Workbook_Open()
  2. '**********************************

  3.   Application.Visible = True
  4.   On Error Resume Next
  5.   With Application
  6.   .ActiveWindow.Caption = ""
  7.   .Caption = "工作表名称"
  8.   .DisplayFormulaBar = True
  9.   End With
  10.   
  11.   Dim BarCtlBtn As CommandBarButton
  12.   Dim BarCtlBtnP As CommandBarPopup
  13.   Application.CommandBars("MyMenu").Delete
  14.   With Application.CommandBars.Add("MyMenu", msoBarTop, False, False)

  15. '******************************


  16. '******************************
  17.     Set BarCtlBtnP = .Controls.Add(Type:=msoControlPopup, id:=1)
  18.        With BarCtlBtnP
  19.            .Caption = "【菜单1】 "
  20.            '.BeginGroup = False
  21.        End With


  22.       
  23.     Set BarCtlBtn = BarCtlBtnP.Controls.Add(Type:=msoControlButton)
  24.         With BarCtlBtn
  25.             .Style = msoButtonIconAndCaption
  26.             .Caption = "【菜单1—1】 "
  27.             .FaceId = 247
  28.             .OnAction = "sub过程名称"
  29.         End With
  30.                      
  31.      Set BarCtlBtn = BarCtlBtnP.Controls.Add(Type:=msoControlButton)
  32.         With BarCtlBtn
  33.             .Style = msoButtonIconAndCaption
  34.             .Caption = "【菜单1—2】 "
  35.             .FaceId = 247
  36.             .OnAction = "sub过程名称"
  37.         End With

  38.   
  39.         
  40. '****************************菜单选项:*************************
  41.    Set BarCtlBtnP = .Controls.Add(Type:=msoControlPopup, id:=1)
  42.        With BarCtlBtnP
  43.            .Caption = "【菜单2】 "
  44.            '.BeginGroup = False
  45.        End With
  46.       
  47.         
  48.     Set BarCtlBtn = BarCtlBtnP.Controls.Add(Type:=msoControlButton)
  49.         With BarCtlBtn
  50.             .Style = msoButtonIconAndCaption
  51.             .Caption = "【菜单2—1】"
  52.             .FaceId = 3650
  53.             .OnAction = "sub过程名称"
  54.             
  55.         End With
  56.     Set BarCtlBtn = BarCtlBtnP.Controls.Add(Type:=msoControlButton)
  57.         With BarCtlBtn
  58.             .Style = msoButtonIconAndCaption
  59.             .Caption = "【菜单2—2】"
  60.             .FaceId = 3648
  61.             .OnAction = "sub过程名称"
  62.         End With



  63.     .Visible = True
  64.   End With
  65. '****************************菜单选项:*************************

  66.    
  67.   
  68. End Sub
  69. Private Sub Workbook_BeforeClose(Cancel As Boolean)
  70. On Error Resume Next
  71.     Application.CommandBars("MyMenu").Delete
  72.     Application.CommandBars("MyMenu2").Delete
  73.     Application.DisplayFormulaBar = True
  74.     '-------
  75. End Sub




复制代码
把代码sub名加入到相应的菜单中,所有的sheet都可以使用了

TA的精华主题

TA的得分主题

发表于 2020-2-13 15:44 | 显示全部楼层
把按钮做成菜单了,2003可能和2007界面区别,应该会出现在工具栏下面,2007在最后菜单有个加载项,点开,就是我给你菜单,弹出菜单第一项第1个就是【求和】功能

新建 Microsoft Excel 工作表.rar

15.35 KB, 下载次数: 6

TA的精华主题

TA的得分主题

发表于 2020-2-13 15:45 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-2-13 15:49 | 显示全部楼层
请各位老师帮助在示例表格中做个实例。
求和是举例,实际程序不是求和,只是做个样子,学习一下怎么共享代码。
还请各位多费心!

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-2-13 17:21 | 显示全部楼层
本帖最后由 laojiu369 于 2020-2-14 18:17 编辑

素心1218老师真是个热心肠,我太感谢你了!
说实话:我的表格每页共有十几个按钮需要共享代码(当然也有单独使用、不用共享代码的),整个工作簿共有27个工作表,其中24个表需要共享代码。看来程序相当复杂了,还有好办法没有。
(不是求和这么简单,我只是随便举个最简单的例子,准备学会以后再举一反三)

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-2-13 17:26 | 显示全部楼层
本帖最后由 laojiu369 于 2020-2-14 18:15 编辑

素心1218老师:
      太感谢您了!


33.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-2-14 09:34 | 显示全部楼层
经过个人测试,对于按钮和窗口命令按钮的初步理解是:
按钮                                                    窗口命令按钮
代码可在表格中也可在模块中                只能在表格中
位置、大小可以随时变化。移动            只有设计状态下可以调整和移动,平时锁定
多个按钮可以共享一套代码                   同一工作表中可以引用,跨表不能简单共享(目前我还没找到办法)
当时就理解到这种程度。
我的理解是否正确,请各位老师赐教!

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-2-14 09:36 | 显示全部楼层
我发帖的目的就是求助:窗口命令按钮跨表共享代码的方法。
哪位老师有这方面的方法,请不吝赐教,万分感谢!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关注官方微信,每天学会一个新技能

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

GMT+8, 2020-5-31 09:25 , Processed in 0.080557 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2020 Wooffice Inc.

   

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

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

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