用于在工作组成员、项目经理和其他利益干系人之间规划、管理和交流项目日程安排和其他信息的 Microsoft 项目管理软件。
注意: 此回复已使用工具翻译;如有任何语法或含义错误,敬请谅解。衷心感谢您的理解。如果我的回答有任何不清楚的地方,请随时留言,我会尽快回复您。
您好 @hua tu,
感谢您在 Microsoft Q&A 论坛发布问题,并提供了详细的问题描述和宏代码。这是宏录制器在处理通配符和格式设置时的一个已知限制。
当您使用特殊字符(例如插入符号 (^#))查找数字时,录制器通常无法正确捕获“查找内容”的值。这会导致宏搜索的内容为空,因此替换操作无效或将数字替换为空格。
您的代码存在问题
您使用了 .Text = "[0-9]" 和 .MatchWildcards = True,这意味着宏只会更改数字的字体。如果您的文档中没有数字,则不会发生任何变化。
如果您想要更改所有文本,此代码将无法工作,因为它仅针对数字。
请尝试使用这个已修正并测试过的宏。它明确定义了搜索任意数字并将其替换为 Times New Roman 字体。
Sub ChangeFontWholeDocument()
Selection.WholeStory
Selection.Font.Name = "Times New Roman" End Sub
如果您只想处理数字
您当前的逻辑对于数字来说是可以的,但请确保:
- 文档中确实包含数字。
- 已包含
.MatchWildcards = True(您已经添加了)。 - 已包含
.Format = True(您漏掉了这一行)。
以下是更正后的版本:
Sub ChangeFontNumbers()
With Selection.Find
.ClearFormatting
.Text = "[0-9]"
.Replacement.ClearFormatting
.Replacement.Font.Name = "Times New Roman"
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchWildcards = True End With Selection.Find.Execute Replace:=wdReplaceAll
End Sub
- 更改文档字体 > 文档中的所有文本立即更改为 Times New Roman 字体。
- 更改数字字体 > 仅数字更改为 Times New Roman 字体。
- 不会弹出任何窗口;您将直接在文档中看到更改。
更多详情,请参阅 Microsoft 文档:对文本应用格式 | Microsoft Learn
希望这能解决您的问题。如有任何其他疑问,请随时联系我。
如果此答案对您有帮助,请点击“接受答案”并点赞。如果您对此答案还有其他疑问,请点击“评论”。
注意:如果您想接收此主题的相关邮件通知,请按照 我们的文档 中的步骤启用邮件通知。