在Word 2016中,已经有内置选项“选择所有样式实例”。以下是它的工作原理:
我想用VBA实现类似的东西。它应该只选择一个文本块。唯一一个,用户的插入符号当前所在的位置。例如,如果插入符号位于Bar()
附近,则结果应为:
在文档中选择(和复制/剪切)大型代码块非常有用。
有任何想法可以做到吗?
(我知道,Stack Overflow不是“免费编码服务”,显示一些部分工作的代码是一个很好的做法,作为你自己努力的证据。但是,进入VBA也有点困难“从头开始“,因为我从来没有使用它。在我之前的练习中只有JavaScript。”
答案 0 :(得分:1)
按Alt + F11打开Visual Basic编辑器
然后选择插入>新模块
粘贴以下代码:
Sub myMacro1()
WordBasic.SelectSimilarFormatting
End Sub
注意:这适用于Office 2007,不确定它在Word 2016中是否相同。如果您可以从菜单中执行某些操作..您可以尝试录制宏(从“开发人员”选项卡)并查看通过Word自动生成的代码定制它们。
答案 1 :(得分:1)
2年后。
Sub SelectOneRangeSameStyle()
Dim curParagraphIndex As Long
Dim curParagraphStyle As Style
'following complex conditions to adjust the curParagraphIndex
'in the case Selection.Star at the beginning of same-style-range
'or the beginning of the document
If Selection.Start <> Selection.Paragraphs(1).Range.Start Or Selection.Start = 0 Then
curParagraphIndex = ActiveDocument.Range(0, Selection.Start).Paragraphs.Count
Else
curParagraphIndex = ActiveDocument.Range(0, Selection.Start).Paragraphs.Count + 1
End If
Set curParagraphStyle = Selection.Paragraphs(1).Style
For i = curParagraphIndex + 1 To ActiveDocument.Paragraphs.Count
If ActiveDocument.Paragraphs(i).Style <> curParagraphStyle Then Exit For
Next i
Selection.End = ActiveDocument.Paragraphs(i - 1).Range.End
For i = curParagraphIndex - 1 To 1 Step -1
If ActiveDocument.Paragraphs(i).Style <> curParagraphStyle Then Exit For
Next i
Selection.Start = ActiveDocument.Paragraphs(i + 1).Range.Start
End Sub