2014-01-04 2 views
3

В моем коде ниже, когда этого слова нет, все содержимое таблицы будет удалено. Как это исправить? Текст находится в ячейке (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 

ответ

2

Прежде всего, вам нужно добавить 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 

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

+0

Hi, KazJaw, спасибо. Это не совсем то, что я хотел, но очень помог мне! Мне нужно удалить только абзац, содержащий слово «ориентация», а не каждый абзац в ячейку (1,1). –