请原谅我确信在这个问题上我需要的手握。我对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
答案 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模板
中工作无论如何,希望它可以帮助别人!