我对 VBA 编程比较陌生,但对一般编程不太熟悉。我在 Word(365、版本 2403、Build 16.0)中的单列表行中存储了一系列报价,需要调整报价属性的格式。每个引用/行的格式为:
This is a quote.
- Attribution Name
This is a quote.
- Attribution
This is a quote.
- Attribution123
其中归属可以是 1 或 2 个字母数字字符。我需要格式化“-”之后的所有字符。目前,我的尝试仅格式化直到第一个单词后面的空格,而不管正则表达式格式搜索中包含任何空格字符。它非常适用于单一名称归因。
在搜索网络和其他帖子后,这是我当前的宏:
Sub DashFormat()
'
' DashFormat Macro
'
'
With ActiveDocument.Range.Find
.ClearFormatting
.Replacement.ClearFormatting
.Forward = True
.Format = True
.Wrap = wdFindContinue
.MatchWildcards = True
.MatchWholeWord = False
.Text = "- [A-z0-9]@>"
.Replacement.Style = "Subtle Emphasis"
.Execute Replace:=wdReplaceAll
End With
End Sub
参考上面的示例,这可以正确地将样式应用于 - 除了“Name”之外的所有内容。 我理解所有这些,除了 .Text 字符串末尾的 @> 功能。我知道如果没有在前面的括号中添加一些字符规范,它就无法工作。
我尝试在括号中添加空格,尝试指示空格 Chr 代码,尝试使用通配符和转义字符。谁能帮我设计查询或解释@>的功能吗?
zero or more occurrences {0,n}
,因此片段中使用了两个匹配模式。也许有人可以提供更简单的解决方案。用于查找前一个字符的重复出现(如果有)@
用于标记单词的结尾>
Sub DashFormat()
With ActiveDocument.Range.Find
.ClearFormatting
.Replacement.ClearFormatting
.Forward = True
.Format = True
.Wrap = wdFindContinue
.MatchWildcards = True
.MatchWholeWord = False
.Text = "- [A-z0-9]@>"
.Replacement.ClearFormatting
.Replacement.Style = "Subtle Emphasis"
.Execute Replace:=wdReplaceAll
.Text = "- [A-z0-9]@> [A-z0-9]@>"
.Execute Replace:=wdReplaceAll
End With
End Sub