2

我有一个小宏,旨在清除任何制表符的选定表。

它完全符合我的预期;但是,请求它的用户报告说它清除了她的整个选项卡文档(实际上,还不错,因为我们不建议在 MSWord 中使用选项卡..)

我希望一个更有经验的宏制作者可以检查小宏,以确保它应该做它设计做的事情(以及我验证它做的事情)

Sub RemoveTabs()
Selection.Tables(this).Select
With Selection
    .Find.Text = Chr(9)
    .Find.Replacement.Text = ""
    .Find.Execute Replace:=wdReplaceAll
End With
End Sub

提前致谢 :)

4

2 回答 2

1

您的代码完全删除了空间,因为

""不等于" "chr(32)

为了安全起见,请将您的代码更改为此

Sub RemoveTabs()
    Selection.Tables(this).Select
    With Selection
        .Find.Text = Chr(9)
        .Find.Replacement.Text = Chr(32)
        .Find.Execute Replace:=wdReplaceAll
    End With
End Sub

一切顺利!


我通过插入表格并输入两个由CTRL+分隔的单词来重现该行为TAB

在此处输入图像描述

然后运行您的原始代码并得到:

在此处输入图像描述

所以我再次插入标签并在更改后

.Find.Replacement.Text = ""

.Find.Replacement.Text = Chr(32)

或者

.Find.Replacement.Text = " "

效果很好!

在此处输入图像描述

于 2013-09-05T15:57:08.780 回答
0

在“With Selection”之后插入以下行

.Find.Wrap = wdFindStop

使用 Find/Replace 时,明确设置/清除许多 Find 选项通常是个好主意。例如,您可以宏录制查找/替换选项并调整 Word 生成的代码。

于 2013-09-05T17:23:33.637 回答