找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1403|回复: 11

[求助]:怎么在WORD文档中设置鼠标CLICK事件

[复制链接]
发表于 2003-2-26 00:27:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
在一个已经完成的WORD文档中,我想用鼠标点击文档的页面,弹出一个自定义对话框,我的想法是这样的,
在菜单中定义一个按钮,当点击完按钮,将鼠标移动到文档编辑区的时候,点击鼠标左键,便能弹出一个提示对话框。
这一步怎么用VBA来解决。哪位大虾能介绍一下你宝贵的建议!小第在这先谢过各位。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 181个

财富等级: 日进斗金

发表于 2003-2-26 19:21:08 | 显示全部楼层
捕捉鼠标左键单击的事件恐怕你要失望了。
在Word中仅可以捕捉鼠标双击和右键单击的事件。方法是声明一个带事件的应用程序级对象(Application),如:Private WithEvents wdApp As Application,然后在按钮的宏中初始化它,Set wdApp = ThisDocument.Application,在事件的过程中放入自己的代码,怎么控制就要看你自己了。


  1.   [FONT=courier new]
  2. Private WithEvents wdApp As Application '声明一个模块级的变量

  3. Set wdApp = ThisDocument.Application '放在按钮的宏过程中

  4. Private Sub wdApp_WindowBeforeDoubleClick(ByVal Sel As Selection, Cancel As Boolean)
  5.     MsgBox "鼠标双击事件触发!"
  6. End Sub

  7. Private Sub wdApp_WindowBeforeRightClick(ByVal Sel As Selection, Cancel As Boolean)
  8.     MsgBox "鼠标右键单击事件触发!"
  9. End Sub

  10.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-2-27 00:32:33 | 显示全部楼层
可以了,根据你的提示我总算找到了正确的方法,开始的时候只添加了你给我的代码,用鼠标点还是没有反映,后来我通过帮助文档发'现
Dim X As New Class_Mouse_Click         'Class_Mouse_Click为定义的类名
Sub Register_Event_Handler()
    Set X.App = Word.Application
End Sub
加了这个以后变可以实现了。这次真是太感谢你了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-2-27 21:03:25 | 显示全部楼层
到底怎样解决,能否贴个代码看看?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-2-28 13:10:53 | 显示全部楼层
最初由 i_want_2 发布
[B]到底怎样解决,能否贴个代码看看? [/B]

建立一个类,其名字是EventClassModule
在这个类中插入这样的代码
Public WithEvents App As Word.Application
Private Sub App_WindowBeforeDoubleClick(ByVal Sel As Selection, Cancel As Boolean)
'鼠标双击事件
msgbox"鼠标双击事件"
End Sub
添加一个模块在其中加入一下代码
Dim X As New EventClassModule
Sub Register_Event_Handler()
    Set X.App = Word.Application
End Sub
Sub Crt_buttom()
'建立按钮菜单
    Dim cmbNewMenu As CommandBar
    Dim ctlPopup As CommandBarPopup
    Set cmbNewMenu = Application.CommandBars("鼠标双击菜单")
    With cmbNewMenu.Controls
        Set ctlPopup = .Add(Type:=msoControlPopup, _
            Before:=1)
        With ctlPopup
            .Caption = "弹出窗口"
            With .Controls.Add           
                .Caption = "运行(&C)"
                .OnAction = "Register_Event_Handler"
            End With
        End With
    End With               
cmbNewMenu.Visible = True  
End Sub

呵呵,这个你看看呢!我是把我做的东西改了一下,但没有运行过,你自己运行一下看看吧。应该没有什么问题。斑竹看了我的代码发表点你的看法呢:)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 181个

财富等级: 日进斗金

发表于 2003-2-28 13:29:07 | 显示全部楼层
在VB中,启动Word时,将Application.Visible = True,它才会显示Word,其余的文档操作,再补充完整就可正常使用。关于菜单和工具栏的操作还要放到VBA中来处理。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-2-28 13:37:44 | 显示全部楼层
好像这样也是只能捕捉到双击事件,不能捕捉到单击事件啊!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 181个

财富等级: 日进斗金

发表于 2003-2-28 13:40:50 | 显示全部楼层
单击用WindowBeforeRightClick,它是触发鼠标右键单击时的事件。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-2-28 19:21:42 | 显示全部楼层
单击怎么搞顶啊?好烦哦!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 181个

财富等级: 日进斗金

发表于 2003-2-28 19:32:04 | 显示全部楼层
跟双击一样啊,下面是在Word中的代码,拷贝到ThisDocument中,首先运行Test过程,再在文档上用鼠标右键单击试试发生了什么情况。

  1.   [FONT=courier new]

  2. Private WithEvents wdApp As Application '声明一个模块级的变量

  3. Sub test()
  4.     Set wdApp = ThisDocument.Application
  5. End Sub

  6. Private Sub wdApp_WindowBeforeDoubleClick(ByVal Sel As Selection, Cancel As Boolean)
  7.     MsgBox "鼠标双击事件触发!"
  8. End Sub

  9. Private Sub wdApp_WindowBeforeRightClick(ByVal Sel As Selection, Cancel As Boolean)
  10.     MsgBox "鼠标右键单击事件触发!"
  11. End Sub
  12.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-2-28 19:50:03 | 显示全部楼层
我发觉只要那个TEST()函数一运行,无论什么时候只要单击右键,双击左键都会触发这两个事件,如果我想只用一次后,后面取消这个功能,那怎么办?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 181个

财富等级: 日进斗金

发表于 2003-2-28 19:59:46 | 显示全部楼层
将Application对象设置为Nothing即可。如:Set wdApp = Nothing。这时就不会触发事件的,因为wdApp对象已经无效。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-22 06:31 , Processed in 0.241040 second(s), 55 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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