Find-Objekt, Do While Schleife verlassen

09/11/2008 - 21:29 von Susanne Wenzel | Report spam
Hallo NG,

ich möchte ein Dokument absatzweise durchlaufen und für jeden Absatz
feststellen, wieviele Tabschritte in diesem enthalten sind. Immerhin habe
ich schon ein bisschen Codeschnipsel produziert, mir gelingt es jedoch
nicht, die Schleife nach dem letzten Vorkommen eines Tabschrittes zu
verlassen.:-(

Sub TabsFinden()
Dim Dock As Word.Document
Dim para As Word.Paragraph
Dim i As Long

Set Dock = ActiveDocument

For Each para In Dock.Paragraphs
i = 0
Do While para.Range.Find.Execute(Chr(9), , , , , , True) = True
i = i + 1
Loop
If i > 0 Then
MsgBox "Tabschritt(e) gefunden"
End If
Next para
End Sub

Ich habe mir die OH zu Find durchgelesen und versucht, danach zu googeln,
hat mir aber in beiden Fàllen nicht geholfen (Gruppengoogeln gelingt mir
seit einiger Zeit nicht mehr), die Endlossschleife erfolgreich zu
verlassen...

Falls mir da jemand helfen kann, wàre ich dankbar.

Schönen Dank fürs Lesen und eventuelle Tips.

Viele Grüße aus dem hohen flachen Norden Deutschlands
Susanne
Office XP, SP3, aktueller Patchstand
Windows 2000, SP4, aktueller Patchstand
KI-TRIPLE 2007
 

Lesen sie die antworten

#1 Christian Freßdorf
10/11/2008 - 08:24 | Warnen spam
Guten Morgen,

als Ansatz auf die Schnelle geht auch:

Sub TabsFinden()
Dim Dock As Word.Document
Dim para As Word.Paragraph
Dim i As Long
Dim rng As Range
Set Dock = ActiveDocument

For Each para In Dock.Paragraphs
i = 0
Set rng = para.Range
With rng.Find
.Forward = True
.ClearFormatting
.MatchWholeWord = True
.MatchCase = False
.Wrap = wdFindStop
.Text = Chr(9)
.Execute
Do While .Found = True
i = i + 1
.Execute Chr(9)
If rng.InRange(para.Range) = False Then Exit Do
Loop
End With

If i > 0 Then
MsgBox i & " Tabschritt(e) gefunden"
End If
Next para
End Sub


Gruß
Christian

Ähnliche fragen