2011-06-18 46 views
2

請原諒手握,我確信我需要在這個問題上。我對Visual Basic很少有經驗。循環查找和刪除行宏

這是我想要做的:我在Word 2011(Mac)中有一個大表,並且我需要在表中找到某個字符串並刪除包含它的行。好的,通過錄制宏來解決這個問題沒有問題。但是,我想讓宏查找所有實例並一次刪除所有行,而不必一遍又一遍地運行宏(除此之外,在找到所有實例之後,啞宏將刪除所在的行當前遊標即使該字符串不在該行中!)。我假設我需要一些while 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

請添加代碼 – BugFinder

+0

在這裏你去: '子Macro2() ' ' Macro2宏 ' ' Selection.Find.ClearFormatting 隨着Selection.Find 。文本= .Replacement 「從拉」 。文本= 「疼痛」 的.forward =真 .Wrap = wdFindContinue .Format =假 .MatchCase =假 .MatchWholeWord =假 .MatchWildcards =假 .MatchSoundsLike =假 個.MatchAllWordForms =假 尾隨着 Selection.Find.Execute Selection.Rows.Delete 結束小組 ' – sethwalt

+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文檔中。如果將此文檔更改爲ActiveDocument,則只有在Normal模板中才能使用該文檔。

無論如何,希望它能幫助別人!