цикл поиска и удаления строки макроса - PullRequest
2 голосов
/ 18 июня 2011

Пожалуйста, прости меня за то, что мне понадобится этот вопрос.У меня очень мало опыта работы с 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 Ответ

1 голос
/ 21 июня 2011

Итак, я нашел ответ на другом форуме и подумал, что выложу его здесь:

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

В любом случае, надеюсь, это кому-нибудь поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...