wie kann man mit VBA ermitteln, in welchem, d. h. wievielten, Absatz sich
die Einf�gemarke befindet?
Thomas Wiedmann
> wie kann man mit VBA ermitteln, in welchem, d. h. wievielten, Absatz sich
> die Einf�gemarke befindet?
Einen Range,der vom Anfang des Dokuments bis zum Cursor geht, definieren und
die Anzahl Abs�tze ausgeben.
Dabei musst du jedoch beachten, dass der Cursor nicht immer dort steht, wo
du eine sinnvolle Antwort bekommst oder dass der Cursor manchmal auch einen
Bereich markiert. Beides habe ich ansatzweise eingebaut.
' ---------- ---------- ---------- ---------- ----------
Option Explicit
Enum ECursor
eCursorEnd = 0
eCursorStart = 1
End Enum
Sub Demo()
MsgBox CStr(funcAbsatzNr(ePosition:=eCursorEnd))
End Sub
Public Function funcAbsatzNr( _
ePosition As ECursor) As Long
Dim rng As Word.Range
funcAbsatzNr = -999999
If Selection.StoryType = wdMainTextStory Then
Set rng = ActiveDocument.Range
Select Case ePosition
Case eCursorStart
rng.SetRange Start:=rng.Start, End:=Selection.Range.Start
Case eCursorEnd
rng.SetRange Start:=rng.Start, End:=Selection.Range.End
Case Else
End Select
funcAbsatzNr = rng.Paragraphs.Count
End If
End Function
' ---------- ---------- ---------- ---------- ----------
--
Thomas Gahler
Co-Autor von �Microsoft Word-Programmierung.
Das Handbuch� (MS Press)
- Windows Vista (SP2), Office 2007 (SP2)
Thomas Wiedmann
> hei�t also, da� es offensichtlich keine Methode oder Eigenschaft � la
> Selection.Information gibt, die so was in einem "BuiltIn"-Statement
> liefert.
Hmmm.... was soll ich jetzt schreiben. Also neutral formuliert, mir ist
keine bekannt. Doch es w�re nicht das erste Mal, dass jemand etwas
besseres/einfacheres kennt
Aber das ist ja eigentlich egal. Einmal ein sch�nes Modul mit solchen
Hilfsmitteln (oder eine Klasse) aufbauen und nutzen. Bei Bedarf kann ja der
Code innerhalb der Funktion angepasst werden. Aufruf und R�ckgabe bleibt die
gleiche und der rest ist egal.