PDA

Vollständige Version anzeigen : Do..loop Schleife bei Textende beenden


R. Bacher
19.10.2000, 10:32
Wie kann man eine Schleife der Form
do until ..
Befehle
loop
Mit Abbruchkriterium Textende abschliessen?

LutzHaase
27.10.2000, 18:22
Hallo, ich weiß jetzt nicht, wo der Text herkommen soll, denke mal aus dem Word-Doc was gerade aktiv ist. Hier 2 Subs, die den Text durchwandern. jeweils aktuelle Zeichen zurückgibt.

Sub BisZumDateiEnde1()
'Welche Faxen das Ding in Tabellen macht weiß ich nicht.
Do Until LetztePosition = Selection.End
' Befehle
LetztePosition = Selection.End 'letzte Position merken
'das nächste Zeichen markieren
'beobachteter Fehler: Am Dokumentende wird Selection.End um 1 erhöht und in der
'nächsten Anweisung, wo Selection.End an eine Variable zugewiesen wird erst berichtigt und dann zugewiesen
'(nicht im Vergleich bei do until !!)
Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
Zeichen = Selection.Range.Text 'Zeichen zur Bearbeitung einlesen
'Start und Ende der Selection zusammenlegen hier wird auch Selection.End berichtigt
Selection.Start = Selection.End
Zeichen = "*" & Zeichen & "*"
MsgBox Zeichen 'Zeichen in der MsgBox anzeigen
Loop
End Sub

' und die hier läuft einfach nur durch
Sub BisZumDateiEnde2()
Do Until LetztePosition = Selection.End
' Befehle
LetztePosition = Selection.End 'letzte Position merken
Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdMove '1 Zeichen weiterrutschen
'hier habe ich den Fehler bei Selection.End nicht beobachtet
Loop
End Sub


Viel spaß beim Testen
Lutz


[Dieser Beitrag wurde von LutzHaase am 27.10.2000 editiert.]

R.Bacher
01.11.2000, 08:25
Hallo Lutz, danke für den Tipp mit Selection.end. Mein Rumpfprogramm sieht nun so aus:

Sub laufen_lassen()

' Variablen definieren
Dim Dateiende As Variant

' ans Ende des Dokuments gehen
Selection.EndKey Unit:=wdStory

' Dateiende (Zahl) in Variable speichern
Dateiende = Selection.End

' an Anfang des Dokuments gehen
Selection.HomeKey Unit:=wdStory

Do While Selection.End <> Dateiende
Selection.MoveDown Unit:=wdParagraph, Count:=1
Loop

End Sub