Как удалить текст в ячейке таблицы, когда найдено определенное слово

В моем коде ниже, когда слово отсутствует, все содержимое таблицы удаляется. Как это исправить? Текст находится в ячейке (1,1) для нескольких таблиц.

Sub DeleteText()

StartWord = "Orientation:"
For Each oTbl In ActiveDocument.Tables
Set oRng = oTbl.Range

With oRng
.Find.Execute Findtext:=StartWord & "*", MatchWildcards:=True
.MoveStart wdCharacter, 0
.MoveEndUntil vbCr
.Delete

 End With
 Next
End Sub

1 ответ

Решение

Прежде всего вам нужно добавить if statement который проверит, найден ли ваш текст. Вы найдете это в коде ниже. Однако я также улучшил способ удаления всего содержимого ячейки, в которой находится ваш текст. Мое решение лучше в ситуации, когда в ячейке больше строк / абзацев / предложений.

Sub DeleteText_Improved()

Dim StartWord As String
Dim oTbl As Table
Dim oRng As Range

StartWord = "Mauris"

For Each oTbl In ActiveDocument.Tables
Set oRng = oTbl.Range

With oRng
.Find.Execute Findtext:=StartWord & "*", MatchWildcards:=True
If .Find.Found Then
    'how to select whole cell range
    oTbl.Cell(.Information(wdEndOfRangeRowNumber), _
            .Information(wdEndOfRangeColumnNumber)).Range.Delete

End If
End With
Next
End Sub

Последнее замечание- ваш код работает только для первого вхождения искомого слова. Это не удалит другие ячейки, где появляется слово.

Другие вопросы по тегам