以下是引用sylun在2007-1-3 11:30:49的发言:如果对段首为域结果的整个段落进行查找替换(插入字符)操作,且需要使用表达式时,段首的第一个域会出现异常,其余域好像不受影响;如果当中有空段落,则空段落的下一段落不会异常。如果只用^&而不使用表达式进行替换则不会出现异常。如果不使用通配符,则不会异常。 不知什么原因所致。 测试文档见附件,且仅以SEQ、REF和QUOTE域作初步测试。测试环境为:winxp sp2 + office2003 sp2
谢谢sylun兄的细致发现。此事折磨我好长一段时间了,我也无法理解其中的奥妙!想了好长一段时间,感觉还是域这种特殊性所致。我无法提供直接的论据,以下佐证仅供参考: 在对以域开头的文本进行通配符查找时,发现无法按我们预想的进行正确查找:
在按照sylun兄提供的查找与替换中,我们发现替换出现了错误,域代码发生了变化:
对选定“变化后的域代码后”,运行以下代码时 Sub Example() Dim i As Range, myString As String For Each i In Selection.Characters myString = myString & Asc(i.Text) & vbCrLf Next MsgBox myString End Sub
我们看到第一个选定字符的ASCII码变为20,正确的域左括号为19,其域已发生根本的变化,甚至不能称为域了,但WORD保留了其域结果和返回了域代码。
根据图一中不能正确查找以及sylun兄提供的信息,对于这种如果是必要的查找与替换时,可以先预置域前文本,最后再删除的方式,来解决这个问题:
希望能有一天会释疑。
[此贴子已经被作者于2007-1-14 9:14:43编辑过] |