Format an Einfügemarke setzen

15/01/2009 - 00:08 von Thorsten Albers | Report spam
Hi, Folks!

Ich schlage mich mit folgendem Problem unter Word 97-VBA herum:

Wenn ich z.B. mit
Selection.Font.Bold = True
das Zeichenformat innerhalb eines Wortes àndern will, wird automatisch das
ganze Wort geàndert, im Beispiel auf Fettdruck, auch dann, wenn in den
Programmoptionen die Option "Ganzes Wort markieren" nicht aktiviert ist.

Kann man Word 97 dieses Verhalten irgendwie abgewöhnen? Sprich: Es soll das
Zeichenformat sozusagen >nur< der Einfügemarke geàndert werden, so daß alle
nachfolgend an der Einfügemarke eingetippten Zeichen dieses Format
annehmen. Bereits eingetippte Zeichen links und rechts der Einfügemarke
sollen sich dadurch >keinesfalls< àndern.

Alternativ würde mir helfen, wenn ich wüßte, wie man in Word-VBA ermitteln
kann, ob die Einfügemarke am Anfang oder am Ende eines Wortes steht. Ich
kann dazu in der Word-VBA-Hilfe keine Informationen finden
('Selection.Flags' bietet diese Information nicht).

Für Antworten wàre dankbar,
Thorsten Albers


Thorsten Albers

albers (a) uni-freiburg.de
 

Lesen sie die antworten

#1 Christian Freßdorf
15/01/2009 - 10:46 | Warnen spam
Hallo Thorsten,

Selection.Font.Bold = True
das Zeichenformat innerhalb eines Wortes àndern will, wird automatisch das
ganze Wort geàndert, im Beispiel auf Fettdruck, auch dann, wenn in den
Programmoptionen die Option "Ganzes Wort markieren" nicht aktiviert ist.



ja, das ist auch unter Word2000 weiterhin so :-(

Kann man Word 97 dieses Verhalten irgendwie abgewöhnen? Sprich: Es soll
das



IMO nicht

Alternativ würde mir helfen, wenn ich wüßte, wie man in Word-VBA ermitteln
kann, ob die Einfügemarke am Anfang oder am Ende eines Wortes steht. Ich
kann dazu in der Word-VBA-Hilfe keine Informationen finden
('Selection.Flags' bietet diese Information nicht).



z.B. mit folgendem Code
Sub PosSelInWord()
If Len(Selection.Range) = 0 Then
Dim bLeer As Boolean
If Right(Selection.Words(1), 1) = " " Then bLeer = True
If Selection.Range.Start = Selection.Words(1).Start Then
MsgBox "Wortanfang"
Else
If bLeer = True Then
If Selection.Range.Start = Selection.Words(1).End - 1 Then
MsgBox "Wortende"
ElseIf Selection.Words(1).Start < Selection.Range.Start <
Selection.Words(1).End - 1 Then
MsgBox "Im Wort"
End If
Else
If Selection.Range.Start = Selection.Words(1).End Then
MsgBox "Wortende"
ElseIf Selection.Words(1).Start < Selection.Range.Start <
Selection.Words(1).End Then
MsgBox "Im Wort"
End If
End If
End If
End If
End Sub

es wird nur geprüft, wenn kein Zeichen markiert ist (1. If)
Dann wird geprüft, ob die Markierung das anschließende Leerzeichen
miteinschließen würde und entsprechend das Wortende reduziert.

Sollte so auch unter Word97 funktionieren.

Gruß
Christian

Ähnliche fragen