Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

goto(next)

20 views
Skip to first unread message

Martin Worm

unread,
Apr 10, 2012, 6:35:13 PM4/10/12
to
hi,

da ich den Namen einer Textmarke nicht kenne, könnte
Datum oder tm_Datum sein, wollte ich mit
.GoToNext(wdGoToBookmark) die nächste Textmarke anspringen.
Leider kommt der Fehler "falscher Parameter"

versuche ich .GoTo(wdGoToBookmark) kommt
"Diese Textmarke ist ncht vorhanden"

habe in meiner Verzweiflung Selection versucht,
leider mit demselben Ergebnis

gebe ich den Namen der Textmarke an,
klappt es. Nur den weiß ich nicht.

Nach der Hlfe ist der Parameter Textmarkenname optional

und mit Word 2000 und 2003 ist das Verhalten gleich

was mach ich falsch?

danke
mit freundlichen Grüßen

Martin Worm
--
benutze Word 2003 SP3 und WinXP

Thorsten Albers

unread,
Apr 11, 2012, 4:27:09 AM4/11/12
to
Martin Worm <Marti...@gmx.eu> schrieb im Beitrag
<msb9o7pg1un1g62pi...@4ax.com>...
> da ich den Namen einer Textmarke nicht kenne, könnte
> Datum oder tm_Datum sein, wollte ich mit
> .GoToNext(wdGoToBookmark) die nächste Textmarke anspringen.
> Leider kommt der Fehler "falscher Parameter"
>
> versuche ich .GoTo(wdGoToBookmark) kommt
> "Diese Textmarke ist ncht vorhanden"
>
> habe in meiner Verzweiflung Selection versucht,
> leider mit demselben Ergebnis
>
> gebe ich den Namen der Textmarke an,
> klappt es. Nur den weiß ich nicht.
>
> Nach der Hlfe ist der Parameter Textmarkenname optional
>
> und mit Word 2000 und 2003 ist das Verhalten gleich
>
> was mach ich falsch?

1. Unter VB/VBA ist es beim Aufruf von Prozeduren immer besser bzw. nur
dann notwendig, Argumente in Klammern zu setzen, wenn ein Funktionsergebnis
zurückgegeben und weiterverarbeitet (z.B. einer Variablen zugewiesen) wird,
oder wenn der Prozeduraufruf mit Call erfolgt. Bsp.:
Call .GoTo(wdGoToBookmark)
Set xyz = .GoTo(wdGoToBookmark)
Aber
.GoTo wdGoToBookmark

2. Weiterhin ist es z.B. wegen der Protabilität zwischen Wordversionen
sinnvoll, die Argumente des Prozeduraufrufes immer zu benennen:
.GoTo What:=wdGoToBookmark, Which:=wdGoToNext
.GoToNext What:=wdGoToBookmark

3. Und schließlich muß das Objekt, dessen GoTo/GoToNext-Methode Du
verwendest, um relativ oder absolut zu einer Textmarke zu springen, diese
Textmarke natürlich auch enthalten.


--
Thorsten Albers

gudea at gmx.de

Martin Worm

unread,
Apr 11, 2012, 5:52:41 PM4/11/12
to
On Wed, 11 Apr 2012 08:27:09 +0000 (UTC), Thorsten Albers wrote:

hallo,

>1. Unter VB/VBA ist es beim Aufruf von Prozeduren immer besser bzw. nur
>dann notwendig, Argumente in Klammern zu setzen, wenn ein Funktionsergebnis
>zurückgegeben und weiterverarbeitet (z.B. einer Variablen zugewiesen) wird,

hab zuwenig rauskopiert :-(

>2. Weiterhin ist es z.B. wegen der Protabilität zwischen Wordversionen
>sinnvoll, die Argumente des Prozeduraufrufes immer zu benennen:
> .GoTo What:=wdGoToBookmark, Which:=wdGoToNext
> .GoToNext What:=wdGoToBookmark

da ich zwischen Word2000 und Word2003 immer hin- und herspringe,
glaube ich sagen zu können, daß Parameter, die in späteren Versionen
hinzukommen, an die Parameterschlange angehängt werden
(auch eine Frage des Programmierstils, und es ist so bequem,daß, wenn
man ein Komma setzt, einem die möglichen Varianten angezeigt werden)

>3. Und schließlich muß das Objekt, dessen GoTo/GoToNext-Methode Du
>verwendest, um relativ oder absolut zu einer Textmarke zu springen, diese
>Textmarke natürlich auch enthalten.

habe einen Bereich(und Selection), in dem Textmarke enthalten war, und
einen, bei dem die Textmarke hinter dem Bereich war, probiert.
Hast du es versucht und es hat geklappt?

Habe die Hilfe nochmal studiert, es könnte sein, daß man man den Namen
der Textmarke angeben muß, um dahin springen zu können.

danke
mit freundlichen Grüßen

Martin Worm
--
benutze Word 2000 und Win XP

Wolfram Jahn

unread,
Apr 12, 2012, 3:41:00 PM4/12/12
to
'Vielleicht hilft dies:


Sub GoToNextBookmark()
Dim nextB As Bookmark

Set nextB = GetNextBookmark
Selection.SetRange nextB.Start, nextB.End

End Sub

Function GetNextBookmark() As Bookmark
Dim b As Bookmark, nextB As Bookmark

Set nextB = ActiveDocument.Bookmarks(1)
For Each b In ActiveDocument.Bookmarks
If b.Start > Selection.Start Then
If b.Start < nextB.Start Then
Set nextB = b
End If
End If
Next b
Set GetNextBookmark = nextB

End Function


' Wolfram

Martin Worm

unread,
Apr 23, 2012, 9:22:58 AM4/23/12
to
On Thu, 12 Apr 2012 21:41:00 +0200, Wolfram Jahn wrote:

hallo Wolfram,

>'Vielleicht hilft dies:
>
>Sub GoToNextBookmark()

>Function GetNextBookmark() As Bookmark

ja, hat es :-)

durch Experimentieren hab ich eine weitere Möglichkeit entdeckt

Sub Finde_Naechste_Textmarke()
Dim RG As Word.Range, BM As String
'ist bei mir im Dok vorhanden
Set RG = ActiveDocument.Bookmarks("ort").Range
RG.MoveEnd wdStory
If RG.BookmarkID > 0 Then
BM = RG.Bookmarks(2).Name
Set RG = RG.Bookmarks(2).Range
Else
BM = RG.Bookmarks(1).Name
Set RG = RG.Bookmarks(1).Range
End If
MsgBox BM
RG.Select
End Sub

Man kann auch Selection verwenden, ich vermeide es nach Möglichkeit,
weil ich es nicht mag, läßt es sich aber manchmal nicht vermeiden.

mit freundlichen Grüßen

Martin Worm
--
benutze Word 2000 und Win XP
0 new messages