ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助]请教word事件处理中所遇到的问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2006-7-16 13:41 | 显示全部楼层 |阅读模式
关闭 word时,在App_DocumentBeforeClose事件里调用 自定义Check()函数。
Check()函数检查到错误,会将光标移动到错误所在的bookmarks里,使用了类似
doc.Bookmarks(“ERRORKMK”).Select 和Selection.HomeKey unit:=wdLine 。
从而这时程序会触发 App_WindowSelectionChange 事件,在WindowSelectionChange
事件里会设置CommandBars("Info")的标题。同时Check()里也有设置
CommandBars("Info")和其他相关的处理。

有两种情况
1. 在关闭word时,总会在App_WindowSelectionChange事件里 设置
CommandBars("Info").Controls(1).Caption = "" 异常。
2. 注释掉Selection.HomeKey unit:=wdLine 后面的除了设置
CommandBars("Info").Controls(1).Caption  = “Error”的代码,程序不异常,
但CommandBars("Info")标题先显示“Error”,然后显示“”。说明先执行完Check(),
然后执行WindowSelectionChange 事件。

问题是,
a. 异常的原因是什么?如何消除。
b. 我想在doc.Bookmarks(“ERRORKMK”).Select 和Selection.HomeKey unit:=wdLine前
调用Application.EnableEvents = False ,之后再Application.EnableEvents = true
但wrod里没有这样的函数,有没有替代方法?

TA的精华主题

TA的得分主题

发表于 2006-7-18 05:24 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

以下代码供参考,关键是在需要屏蔽事件时,释放Application事件对象变量(=Nothing)

请注意预期事件和预期动作的代码前后次序

'* +++++++++++++++++++++++++++++

'* Created By SHOUROU@ExcelHome 2006-7-18 5:22:59

'仅测试于System: Windows NT Word: 11.0 Language: 2052

'№ 0038^The Code CopyIn [ThisDocument-ThisDocument]^'

'* -----------------------------

Public WithEvents myApp As Word.Application '声明Application事件的对象变量

Private Sub Document_Open()

    Set myApp = Word.Application '初始化声明的对象

End Sub

'----------------------

Private Sub myApp_WindowSelectionChange(ByVal Sel As Selection)

    MsgBox Sel.Text '每次移动光标或者所选内容时输出其内容

End Sub

'----------------------

Sub Example()    '测试禁用Application对象事件

    With Selection

        Set myApp = Nothing    '释放对象

        .HomeKey wdStory    '移到光标到文档首位置,此时,将不再触发WindowSelectionChange事件

        .WholeStory    '全选文档,此操作为预期事件,即结合下面代码将导致触发WindowSelectionChange事件

        Set myApp = Word.Application    '初始化声明的对象,注意它应在预期动作之后

    End With

End Sub

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

本版积分规则

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

GMT+8, 2024-11-16 18:03 , Processed in 0.030080 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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