ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 建立OLEObject 并用类 WithEvents 设定其事件的问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-3-12 16:43 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助


欲在sheet1中建立3个Command button,并利用类设定各按钮的事件,不过一直不成功…
有一类名class1,作用是设定按钮事件用
代码
  1. Public WithEvents Comm As CommandButton
  2. Private Msg$
  3. Public Sub SetMsg(pMsg$)
  4.     Msg$ = pMsg$
  5. End Sub

  6. Private Sub Comm_Click()
  7.     MsgBox Msg$
  8. End Sub
复制代码
另有模块 ,作用是产生Commandbutton 并设定其事件
  1. Public EvCC As New Collection

  2. Sub WithEventsTest()

  3.     'Dim OLeObj As OLEObject
  4.     Dim Cmd As CommandButton

  5.     For i = 0 To 2
  6.         'Create OLEObject process--------------------
  7.         Set Cmd = Sheet1.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False _
  8.             , DisplayAsIcon:=False, Left:=225.75 + i * 72, Top:=138, Width:=72, Height:=24 _
  9.             ).Object

  10.         Cmd.Caption = i
  11.         '--------------------------------------------
  12.         
  13.         'Set Oleobject  Event-------------------
  14.         Dim E As New Class1
  15.         Set E.Comm = Cmd
  16.         E.SetMsg "This is " & CStr(i)
  17.                
  18.         '--------------------------------------------
  19.         
  20.         'Set Event Object to public Var

  21.         EvCC.Add E
  22.             
  23.         '--------------------------------------------
  24.         
  25.         'Clear E event class
  26.         Set E = Nothing
  27.     Next
  28.    
  29. End Sub
复制代码
运行模块中的sub WithEventsTest()一直不成功

我有试过若不是创件按钮的话,代码是可以运作的。



TA的精华主题

TA的得分主题

发表于 2015-3-14 22:20 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
试了几遍,貌似不能在一个过程中实现,只能分两次过程,添加控件,设置类属性。且不能用添加控件的过程,调用设置类属性来达到目的。

TA的精华主题

TA的得分主题

发表于 2015-3-15 10:17 | 显示全部楼层
我推测,用代码当向工作表中插入ActiveX控件时,处于设计模式,故无法实现对所插入的模块进行类化处理(实时模式);只有退出设计模式后,才能实现。
可以将代码分开,插入控件用自定义的sub实现,激活控件的类化用工作表事件。但是其中还是会有一点问题。

TA的精华主题

TA的得分主题

发表于 2015-3-15 11:12 | 显示全部楼层
如果方便的话,建议上传附件

TA的精华主题

TA的得分主题

发表于 2015-3-15 12:53 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 tianying 于 2015-3-15 12:56 编辑

这次好像可以了,用Ontime调用设置类的过程,基本上差不多了,见附件。 withevents1.rar (20.43 KB, 下载次数: 289)

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2020-6-15 14:24 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

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

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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