【问题标题】:WORD VBA Search and switch to advancedWORD VBA 搜索并切换到高级
【发布时间】:2021-09-28 18:14:10
【问题描述】:

需要你的帮助。而且我事先知道内置的“CTRL + H”功能应该给出适当的答案 - 但在我的情况下它不是。由于文本语言问题,并且因为我有很多不是“字母或数字”的字符 - 通常的搜索和交换会导致错误。

现在是请求 - 非常感谢!

我能够“抓取”并修改一个相对简单的代码,该代码执行整个文档的搜索和替换,我能够将 MSGBOX 线程化到每个替换的请求确认:

“确定”按钮 - 确认单个替换。 “否”按钮 - 跳过此搜索 - 并且不进行切换。 “取消”按钮 - 停止宏。

  1. 如何添加第四个按钮来执行“全部替换”?

  2. 是否有无需用户干预即可运行的“倒计时”选项?我希望默认为“Ok”,即使我没有按,3 秒后 - 将进行更改。

  3. 很多天我一直在头疼 - 并且无法转换仅适用于选定/标记文本的代码。

这是我使用的代码

Sub Want2Replace()
  Dim myRange As Range
  Set myRange = ActiveDocument.Content
  myRange.Find.ClearFormatting
  myRange.Find.MatchWildcards = True
  Dim cached As Long
  cached = myRange.End
      Do While myRange.Find.Execute("åÀ")
          myRange.Select
          MyAnswer = MsgBox("Replace " & myRange.Find.Text & "?", vbYesNoCancel)
              If MyAnswer = vbYes Then Call Shva_Na
              If MyAnswer = vbCancel Then Exit Sub
                  myRange.Start = myRange.Start + Len(myRange.Find.Text)
                  myRange.End = cached
      Loop
  End Sub

【问题讨论】:

  • 您不能向消息框添加按钮。您只能使用标准选项。
  • 您可以创建用户表单以获得更大的灵活性/功能。 gmayor.com/Userform.htm
  • 消息框不能给你按钮!您是否考虑过使用用户表单?

标签: vba replace ms-word


【解决方案1】:

根据您的要求,您可以使用 ReplaceAll 编写第二个函数或根据用户期望调整您的函数。

您还可以添加另一个要求 ReplaceAll 的 MsgBox。

因此,您必须自己决定并回答用户是否真正想要ReplaceAll 和/或单个Replace 是作为附加功能的特殊功能。

【讨论】:

  • 非常感谢您的所有回答。如前所述,困难在于有时替换会删除在搜索结果中“吞下”的其他字符。这个问题应该保持开放:有些情况用户事先知道他允许自己“替换所有”,并且他不会感到惊讶,有些情况他更喜欢检查几个案例,然后才切换到使用“全部替换”。
猜你喜欢
  • 2021-02-05
  • 1970-01-01
  • 1970-01-01
  • 2019-11-29
  • 1970-01-01
  • 2019-01-14
  • 1970-01-01
  • 1970-01-01
  • 2015-07-11
相关资源
最近更新 更多