【问题标题】:VBA Word -- formatting the color of a word depending on its first letterVBA Word - 根据第一个字母格式化单词的颜色
【发布时间】:2020-03-08 15:10:11
【问题描述】:

我正在尝试创建一个宏,根据单词的第一个字母将文档中每个单词的颜色设置为预定义的颜色(例如,如果“a”=red,“apple”=red)。这是为了模拟grapheme-color synesthesia的具体形式。

这是我目前拥有的示例:

 Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
    .Text = "a"
    .MatchCase = False
    .Replacement.Text = "a"
    .Forward = True
    .Wrap = wdFindContinue
    .Format = True
    .MatchWholeWord = False
    .MatchByte = False
    .CorrectHangulEndings = True
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False
    .Replacement.Font.Color = a_color
End With
Selection.Find.Execute Replace:=wdReplaceAll

显然,这只会改变每个字母的颜色,而不是整个单词。

有没有简单的方法来做到这一点?或者有没有办法根据第一个字母找到选择?

【问题讨论】:

  • 可以的,看我编辑的答案!

标签: vba ms-word


【解决方案1】:

根据我刚刚从高级搜索中记录的宏并替换“wizzard”,这应该可以找到第一个字符:

.Text = "<a"
.MatchWildcards = True

要更改完整的单词,应该是这样的:

.Text = (<[aA]*>)
.MatchWildcards = True
.Replacement.Text = "\1"

加上您更改颜色的代码,以及您已经拥有的其余代码。这里假设大写字母 A 的颜色与小写字母相同。

经过多次尝试,看来您甚至不必进行任何替换,并且可以摆脱 ():

.Text = <[aA]*>
.MatchWildcards = True
.Replacement.Text = ""

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多