Suche im Stin von NEAR

28/02/2008 - 08:31 von Eric March | Report spam
Moin, Moin!

làsst sich dies unter VBA verwirklichen (gedacht für Wort97):

1. Wort "A" suchen. Ggf. mit der Festlegung anfangs vom Dokumentbeginn an.
2. Merken wo Wort A ist; als laufende Nummer in der Zahl der Wörter.
3. Aufwàrts nach Wort "B" suchen. Dabei aber Stopp am oberen
Dokumentende (mit entsprechender Notiz).
4. Wenn B gefunden Position von B merken.
5. Nummer 3 & 4 abwàrts zum Dokumentende hin (von A aus).
6. Der eigetliche Hintergedanke: Abstànde von A und B ermitteln und wenn
die (oder einer) innerhalb einer willkürlichen Grenze liegen Mitteilung
an Benutzer. Wenn nein weiter bei Nummer 1 bis Dokumentende.

Die Suche an sich, die Entscheidungsverwaltung sollte ich schon mal so
hinbekommen (da müsste es doch einen Schalter geben der nicht über die
Dokumentgrenze hinweg im Kreis weitersucht?!)

Was mir Sorgen macht ist der Kern meiner Idee: Merken wo ich bin und das
wahrhaftig in Zahlen festlegen.
Vor meinem geistigen Auge kreist diese alternative Idee: Ich merke mir A
anhand einer (Temporàren) Textmarke. Dann markiere ich bis B (wenn das
denn geht) und zàhle diese Auswahl durch.

Ist das umzusetzen?

Eric March

Kenne die Vergangenheit. In der Unwissenheit über die Vergangenheit
liegt das Verderben der Zukunft.
"Die Geschichte ist der beste Lehrmeister - mit den unaufmerksamsten
Schülern." Indira Gandhi
 

Lesen sie die antworten

#1 Helmut Weber
28/02/2008 - 17:58 | Warnen spam
Hallo Eric March,

1. Wort "A" suchen. Ggf. mit der Festlegung anfangs vom Dokumentbeginn an.
2. Merken wo Wort A ist; als laufende Nummer in der Zahl der Wörter.
3. Aufwàrts nach Wort "B" suchen. Dabei aber Stopp am oberen
Dokumentende (mit entsprechender Notiz).


...
Ist das umzusetzen?



Ja, sicher. Aber hier gleich eine vollstàndige Lösung zu posten,
geht über meine Kràfte nach einem harten Tag im Büro.

Der Code ist sicher mit vielen Fehlern behaftet,
vor allem nicht in der Lage herauszufinden,
wo im Dokument "A" und "A" am nàchsten zueinander sind.
Also nur eine Idee, um sie weiter zu entwickeln.

Wenn man mal die Differenz hat zwischen Abstand nach oben
und Abstand nach unten, ist das Weitere hoffentlich kein Problem mehr.
Alles mit "Selection" ist nur zum Testen.

Und müsste man auf Wörter umschreiben.
Ist alles nur Jonglieren mit Ranges,
trotzdem und - na denn, viel Spaß.


Public Function FindNear(str1 As String, _
str2 As String) As Long
Dim rDcm As Range
Dim p1 As Long
Dim p2 As Long
Dim p3 As Long
Dim p4 As Long
Dim bBack As Boolean
Dim bForw As Boolean
Dim d1 As Long
Dim d2 As Long
Set rDcm = ActiveDocument.Range
p1 = 0
With rDcm.Find
.Text = str1
.MatchCase = True
If .Execute Then
rDcm.Select
p2 = rDcm.End
rDcm.Start = 0
rDcm.End = p2 - 1
rDcm.Select
With rDcm.Find
.Text = str2
.MatchCase = True
.Forward = False
If .Execute Then
rDcm.Select
p3 = rDcm.End
bBack = True
d1 = p2 - p3
End If
End With
rDcm.Start = p2
rDcm.End = ActiveDocument.Range.End
rDcm.Select
With rDcm.Find
.Text = str2
.MatchCase = True
.Forward = True
If .Execute Then
rDcm.Select
p4 = rDcm.Start
bForw = True
d2 = p4 - p2
End If
End With
If bBack = False And bForw = False Then
FindNear = 0
Exit Function
Else
If d1 < d2 And d1 <> 0 Then
FindNear = d1 * -1
Exit Function
Else
FindNear = d2
Exit Function
End If
End If
Else
FindNear = False
End If
End With
End Function

Sub Test6881()
MsgBox FindNear("A", "z")
End Sub






Gruß

Helmut Weber, MVP WordVBA

Vista Small Business, Office XP

Ähnliche fragen