Vba 一个范围如何与其规格不同?

Vba 一个范围如何与其规格不同?,vba,ms-word,Vba,Ms Word,这是我的密码 LibStart = 8942 LibEnd = 9092 With SecRng.Document Set LibRng = .Range(LibStart, LibEnd) Debug.Print Left(LibRng.Text, 50) Debug.Print .Range(LibStart, LibStart + 50).Text End With 我希望这两个打印输出是相同的,但它们不是

这是我的密码

    LibStart = 8942
    LibEnd = 9092
    With SecRng.Document
        Set LibRng = .Range(LibStart, LibEnd)

        Debug.Print Left(LibRng.Text, 50)
        Debug.Print .Range(LibStart, LibStart + 50).Text
    End With
我希望这两个打印输出是相同的,但它们不是。为什么?

第一次打印与预期一致。当我在文档
中选择相应的文本时?选择。开始
将给我9042

第二个打印输出正好从预期的下一段开始。当我选择文档中的文本时
?Selection.Start
将返回9062<代码>?第一段的Selection.Characters.Count=20。所有这些都加起来了,但为什么呢?我的推理错误在哪里

该范围内有一些双字节字符。LibEnd=9092可能不是我会同意的。但我认为这对眼前的问题无关紧要,至少,因为我打印出来的前50个字符中没有双字节字符,不管是哪种方式,当我按名称选择整个范围时,就会选择正确的范围。我认为那是一条死胡同

我想,原因一定是
Document.Range
SecRng.Document.Range
之间存在差异。因此,我在20个字符中添加了几个字符。输出没有改变:第二次打印从第二段开始,与之前相同,但25个字符之后,而不是之前的20个字符。因此,显然,这不是一个字符数,而是一个段落数


有什么想法吗?

什么是“秘密”?一个范围(和所选内容)。TextRetrievalMode设置可能与此有关,当然,如果您的文本中有任何字段代码(请参阅,例如)
SecRng
是一个范围,包含文档中的一个部分(本例中的最后一个部分)。我遇到的奇迹通常是由于错误的测试程序造成的。一夜之间,我想到了我的测试可能会产生误导的方法,并将在白天实施一些想法。请注意这个空间。