假设我Range
在Word VBA中有一个引用,我想将其分解为格式(字体,颜色等)相同的较小范围.例如,如果我开始:
在快速的棕色狐狸跳过了懒惰的狗.
...然后我想回到5个范围,如下:
该
快
棕色的狐狸跳过了
懒
狗.
我曾希望有一种内置的方法可以在VBA中执行此操作(甚至可以使用这样的工具进行虚拟记忆),但我找不到任何东西.
我可以在代码中做我需要做的事情,但是本地工作的东西会更快(更多).
[在代码中,我会使用这样的事实 - 例如 - oRange.Font.Bold
如果范围包含粗体和非粗体的混合,将返回"undefined",因此我可以重复使用它来发现均匀范围的范围.但是我很确定Word会在幕后做这件事,所以如果有人可以为我吹嘘,我会很感激.]
编辑:删除了StackOverflow HTML渲染器不喜欢的更复杂的示例.
在VBA中无法真正做到这一点,因为OM不支持运行(但OOXML却支持).您可能做的最好的事情是获取wdCharacterFormatting的wdUnits并创建一个循环来创建范围,提取它们的属性然后销毁它们直到循环结束.你可能会开始这样的事情:
Dim sel As Selection
Set sel = ActiveWindow.Selection
Dim selRange As Range
Set selRange = selRange.Next(wdCharacterFormatting)
Run Code Online (Sandbox Code Playgroud)
获取下一组格式的开始和结束,例如selRange.Start/selRange.End,以及selRange.Font.Name/selRange.Bold等任何属性.