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
是一个范围,包含文档中的一个部分(本例中的最后一个部分)。我遇到的奇迹通常是由于错误的测试程序造成的。一夜之间,我想到了我的测试可能会产生误导的方法,并将在白天实施一些想法。请注意这个空间。