【问题标题】:VBA - Macro to extend selection to end of current table column, then find and replace only within that selectionVBA - 宏将选择扩展到当前表列的末尾,然后仅在该选择中查找和替换
【发布时间】:2020-07-07 05:27:07
【问题描述】:

我被要求更新一个非常旧的 VBA 宏,该宏创建从当前光标到当前表列末尾的选择。然后它搜索该选择并用新字符替换某些字符。在 Word 2003 中,它可以完美运行,只替换所选内容内的字符。但是,在 Word 2010 中,它会替换所选内容之外的字符。任何帮助将非常感激。我进行了广泛搜索,并尝试了此代码的许多变体。

Selection.EndKey Unit:=wdColumn, Extend:=wdExtend
With Selection.Find
  WordBasic.EditReplace Find:=" ", Replace:="", Direction:=0, MatchCase:=True, WholeWord:=0, PatternMatch:=0, SoundsLike:=0, ReplaceAll:=1, Format:=0, Wrap:=0
  WordBasic.EditReplace Find:="-", Replace:="–", Direction:=0, MatchCase:=0, WholeWord:=0, PatternMatch:=0, SoundsLike:=0, ReplaceAll:=1, Format:=0, Wrap:=0
  WordBasic.EditReplace Find:="0", Replace:="–", Direction:=0, MatchCase:=True, WholeWord:=True, PatternMatch:=0, SoundsLike:=0, ReplaceAll:=1, Format:=0, Wrap:=0
  WordBasic.EditReplace Find:="^p", Replace:="", Direction:=0, MatchCase:=True, WholeWord:=0, PatternMatch:=0, SoundsLike:=0, ReplaceAll:=1, Format:=0, Wrap:=0
  WordBasic.EditReplace Find:="^l", Replace:="", Direction:=0, MatchCase:=True, WholeWord:=0, PatternMatch:=0, SoundsLike:=0, ReplaceAll:=1, Format:=0, Wrap:=0
End With

【问题讨论】:

  • 如果不使用选择,而是找到选择的列,然后设置范围,该怎么办?一旦设置了范围,我认为它只会在该范围内搜索。
  • 谢谢,@hessr17。完美运行。

标签: vba ms-word


【解决方案1】:

我能够根据选择创建一个范围。

创建从当前表格单元格到列末尾的选择:

Selection.EndKey Unit:=wdColumn, Extend:=wdExtend

创建一个等于当前选择的范围对象:

Dim myRange As Range
Set myRange = ActiveDocument.Range(Selection.Range.Start, Selection.Range.End)

根据 myRange 执行查找和替换,在这种情况下,使用 wdFindStop,这样它就不会回到开头或询问用户是否要从头开始搜索:

With myRange.Find
  .Text = " "
  .Replacement.Text = ""
  .Wrap = wdFindStop
  .Execute Replace:=wdReplaceAll
End With

With myRange.Find
  .Text = "0"
  .Replacement.Text = "-"
  .Wrap = wdFindStop
  .Execute Replace:=wdReplaceAll
End With

myRange.Find.Execute Replace:=wdReplaceAll

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多