循环查找和删除行宏

时间:2011-06-18 19:01:01

标签: vba ms-office word-vba

请原谅我确信在这个问题上我需要的手握。我对visual basic的经验很少。

这是我正在尝试做的事情:我在Word 2011(Mac)中有一个大表,我需要在表中找到某个字符串并删除包含它的行。好的,通过录制宏来做到这一点没问题。但是,我想让宏找到所有实例并一次删除所有行而不必反复运行宏(除此之外,在找到所有实例之后,哑宏将删除行所在的位置)即使字符串不在该行中,光标也是当前的!)。我假设我需要某种while循环,但我不知道如何对Selection.Find进行布尔测试 - 如果这甚至是我需要做的!

提前致谢。

编辑代码从评论中复制粘贴并格式化:

Sub Macro2() ' ' Macro2 Macro ' '
    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = "pull from"
        .Replacement.Text = "Pain"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute
    Selection.Rows.Delete
End Sub

1 个答案:

答案 0 :(得分:1)

所以,我在另一个论坛上找到了答案,并认为我会在这里发布:

With ThisDocument.Tables(1)
For r = .Rows.Count To 1 Step -1
        fnd = False
        For Each c In .Rows(r).Cells
            If InStr(c.Range.Text, "x") > 0 Then fnd = True
        Next
        If fnd Then .Rows(r).Delete
    Next
End With

其中“x”是要搜索的文本。

为我工作,虽然确实需要一些时间来遍历250左右的行表,所以起初我认为Word已经冻结了。另外,我输入的文本字符串(“x”)在首次查找全大写文本字符串时遇到了麻烦,所以我不得不将搜索字符串放在大写字母中。

此外,我发现这个宏不起作用,除非它被复制到需要运行的word文档中。将ThisDocument更改为ActiveDocument允许它仅在Normal模板

中工作

无论如何,希望它可以帮助别人!