在 Microsoft Word VBA 中,
Range([Start],[End])
.. 的参数的性质是什么?
它们是基数 0 还是基数 1..?它们应该是一个选择范围吗?或者绝对角色位置..?他们的运作方式令人困惑。
Microsoft Document.Range 文档对参数进行了以下说明。这意味着它们是绝对的角色位置,但这不是它们的行为方式......
Start Optional Variant The starting character position.
End Optional Variant The ending character position.
这是我正在做的一个例子......
比如说,我有一份仅包含文本
xyz
的文档。
?ActiveDocument.Range(0,0) gives me a zero-length string where I expected `x`.
?ActiveDocument.Range(0,1) gives me `x` as I expected.
?ActiveDocument.Range(1,1) then gives me another zero-length string.
?Mid(ActiveDocument.Range.Text,1,1) gives me `x` and is much more familiar.
所以在我看来
Start
和 End
更像是一个选择范围,而不是绝对位置。但我仍然不明白何时Start=End
为什么它给出零长度字符串。
这些值就像是字符之间的空格的绝对位置。
文档对此不太清楚:根据Microsoft,
Start
和End
定义了开始和结束字符位置。他们没有解释 结束字符 的确切含义,但从他们给出的示例中,您可以得出结论,结束位置处的字符 不 包括在内:
此示例将粗体格式应用于中的前 10 个字符 活动文档。
ActiveDocument.Range(Start:=0, End:=10).Bold = True
很明显,范围从索引 0 开始,不包括
End
处的字符(否则你会得到 11 个字符,而不是 10 个)。
这符合您的测试 - 开始和结束的值相同将导致 0 个字符。