2011-06-18 18 views
2

私はこの質問に必要となると確信している手持ちを許してください。私はビジュアルベーシックの経験はほとんどありません。行を見つけて削除するループを繰り返す

ここに私がやろうとしていることがあります。私はWord 2011(Mac)に大きなテーブルを持っており、テーブル内の特定の文字列を見つけて、それを含む行を削除する必要があります。さて、マクロを記録することでそれをすることは問題ありません。しかし、私はすべてのインスタンスを見つけて、一度に行をすべて削除するのではなく、マクロを繰り返し実行する必要があります(さらに、すべてのインスタンスが見つかった後、ダムマクロは行を削除します文字列がその行にない場合でもカーソルは現在あります)。 whileループの必要があると仮定していますが、Selection.Findのブールテストを行う方法がわかりません。

ありがとうございます。

EDITコードコメントからコピー&ペーストしてフォーマット:

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 での.textは= .Replacement "からプル" .text = "痛み" の.forward = Trueの .Wrap = wdFindContinue .Format = Falseの .MatchCase = Falseの .MatchWholeWord = Falseの .MatchWildcards = Falseの .MatchSoundsLike = Falseの .MatchAllWordForms = Selection.Find.Execute Selection.Rows.Delete End Subのようなコメントでコードの ' – sethwalt

+0

入れないで下さいトンをfalse 終了。読むのが本当に苦痛です。あなたの質問の本文に入れてください。私はあなたのために今度それをやるでしょう。 –

答えて

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")は、最初に全角文字列を見つけるのに問題があったので、検索文字列も大文字で入力する必要がありました。

また、このマクロは、文書を実行する必要がある文書にコピーされていないと機能しないことがわかりました。 ThisDocumentをActiveDocumentに変更すると、それがNormalテンプレート内にある場合のみ機能します

とにかく、誰かを助けることを願っています!

関連する問題