Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2678|回复: 3

[已解决]请教,如果commandbutton1已经画在窗体上了,如果再用代码声明一次会有什么后果?

[复制链接]
发表于 2014-2-18 23:06 | 显示全部楼层 |阅读模式
请教,如果commandbutton1已经画在窗体上了,再用代码声明一次会有什么后果?试过,结果是这个按钮的事件代码无效了但不报错。是什么原理?
Dim WithEvents CommandButton1 As MSForms.CommandButton


最佳答案
2014-2-19 21:02
这种用法还是比较奇怪。
自己在过程中声明的与系统提供的声明貌似不会在编译时报错。
隶属的库不一样。
如果当前模块或工程中有的话,有可能不会找到系统提供的库中查找。

发表于 2014-2-19 20:52 | 显示全部楼层
我是这么理解的,因为在你的模块中已经有了相应的方法或函数,原来系统提供的就无效了。
  1. Private Sub CommandButton1_Click()
  2.     msgbox "1"
  3. End Sub

  4. Sub msgbox(str)
  5.     Debug.Print str
  6.     Stop
  7. End Sub
复制代码
这里我定义了一个msgbox函数,系统提供的就无效了。
如果想调用系统的,
  1. VBA.msgbox 1
复制代码
回复

使用道具 举报

发表于 2014-2-19 20:56 | 显示全部楼层
再继续挖
  1. Dim WithEvents CommandButton2 As MSForms.CommandButton

  2. Private Sub CommandButton1_Click()
  3.     msgbox "1"
  4.     VBA.msgbox 1
  5. End Sub

  6. Sub msgbox(str)
  7.     Debug.Print str
  8.     Stop
  9. End Sub

  10. Private Sub CommandButton2_Click()
  11.     VBA.msgbox "test"
  12. End Sub

  13. Private Sub UserForm_Click()

  14. End Sub

  15. Private Sub UserForm_Initialize()
  16.     Set CommandButton2 = Me.CommandButton1
  17. End Sub
复制代码
单击按钮后,先会调用原有的click事件,然后再是commandbutton2的click事件。
回复

使用道具 举报

发表于 2014-2-19 21:02 | 显示全部楼层    本楼为最佳答案   
这种用法还是比较奇怪。
自己在过程中声明的与系统提供的声明貌似不会在编译时报错。
隶属的库不一样。
如果当前模块或工程中有的话,有可能不会找到系统提供的库中查找。

回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-20 18:45 , Processed in 0.171342 second(s), 7 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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