VBA - 在Word中,检查选择是否包含指定的字符串

时间:2015-04-10 02:10:55

标签: string vba selection word-vba contains

我有一个包含多行文字的word文档。我想确定哪些行(或段落长于一行)包含字符串“/”并删除那些没有一行的行。

这是我一直在努力实现的一个例子。 If语句显然是目前不起作用的部分,但我一直在解决问题。

Selection.WholeStory
nLines = Selection.Range.ComputeStatistics(Statistic:=wdStatisticParagraphs)
Selection.HomeKey Unit:=wdStory
Do While StartNumber2 < nLines
StartNumber2 = StartNumber2 + 1
Selection.HomeKey Unit:=wdLine
Selection.MoveDown Unit:=wdParagraph, Count:=1, Extend:=wdExtend
If Selection.Text = " / " Then
Selection.MoveDown Unit:=wdLine, Count:=1
Else: Selection.Delete Unit:=wdCharacter, Count:=1
End If
Loop

这是它要检查的文本示例。我需要它来删除2&amp; 4并留下1&amp; 3:

  1. Back In Black / ACDC(3:54) -
  2. 今晚(2:44) -
  3. Lucy in the Sky with Diamonds / The Beatles(4:22) -
  4. 随机歌曲名称(3:33) -
  5. 任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

感谢共产国际。 我认为会有一种简单的方法,InStr就能完成这项任务。

Selection.WholeStory
nLines = Selection.Range.ComputeStatistics(Statistic:=wdStatisticParagraphs)

Selection.HomeKey Unit:=wdStory
Do While StartNumber2 < nLines
StartNumber2 = StartNumber2 + 1
Selection.HomeKey Unit:=wdLine
Selection.MoveDown Unit:=wdParagraph, Count:=1, Extend:=wdExtend
If InStr(Selection, " / ") > 0 Then
Selection.MoveDown Unit:=wdLine, Count:=1
Else: Selection.Delete Unit:=wdCharacter, Count:=1
End If
Loop