在我的下面的代码中,当单词不在那里时,所有表格contente都将被删除。怎么解决?对于多个表,文本在Cell(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
答案 0 :(得分: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
最终评论 - 您的代码仅适用于您搜索的单词的第一次出现。它不会删除单词出现的其他单元格。