Hakan benötigt ein Makro, das die Zeichen (ohne Leerzeichen) in einem Word-Dokument zählt und jeden 1000. Buchstaben hervorhebt. Das Erstellen eines solchen Makros ist recht einfach: Sie müssen lediglich alle Zeichen in einem Dokument untersuchen und nur diejenigen zählen, die keine Leerzeichen sind. Das Folgende ist ein einfaches kleines Makro, das genau das tut:

Sub CountThousands1()

Dim J As Long     Dim X As Integer

X = 0     With ActiveDocument         For J = 1 To .Characters.Count             If .Characters(J) <> " " Then X = X + 1             If X = 1000 Then                 .Characters(J).Select                 Selection.Range.HighlightColorIndex = wdYellow                 X = 0                 Beep             End If         Next J     End With End Sub

Das Makro ist einfach genug; Es untersucht die Zeichensammlung, die alle einzelnen Zeichen in einem Dokument enthält. Das Problem mit dem Makro ist, dass es langsam ist – sehr langsam. Word ist nicht besonders effizient, wenn es darum geht, einzelne Zeichen auf diese Weise zu untersuchen. (Es scheint, dass Word jedes Mal, wenn Sie auf ein Mitglied der Zeichensammlung verweisen, alle Zeichen vom Anfang des Dokuments an erneut untersuchen muss.)

Ein anderer Ansatz besteht darin, einfach durch das Dokument zu gehen und eine Auswahl zu erweitern, bis Sie 1.000 Zeichen ohne Leerzeichen erhalten.

Sub CountThousands2()

Dim X As Integer     Dim sRaw As String     Dim sProc As String

Selection.MoveRight Unit:=wdCharacter, Count:=1000, Extend:=wdExtend     While Len(Selection) = 1000         sRaw = Selection         sProc = Replace(sRaw, " ", "")

X = 1000 - Len(sProc)

While X > 0             Selection.MoveRight Unit:=wdCharacter, Count:=X, Extend:=wdExtend             sRaw = Selection             sProc = Replace(sRaw, " ", "")

X = 1000 - Len(sProc)

Wend         Selection.Collapse Direction:=wdCollapseEnd         Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend         Selection.Range.HighlightColorIndex = wdYellow         Selection.Collapse Direction:=wdCollapseEnd         Selection.MoveRight Unit:=wdCharacter, Count:=1000, Extend:=wdExtend     Wend End Sub

Starten Sie dieses Makro mit der Einfügemarke am Anfang des Dokuments. Das Makro erfasst dann tausend Zeichen, weist diese Auswahl einer Variablen zu (sRaw), erstellt eine Variable, aus der alle Leerzeichen entfernt sind (sProc), und berechnet dann die Länge von sProc. Wenn es weniger als 1.000 ist, wird die Auswahl um so viele Zeichen erweitert, wie kurz sie war, und der Vorgang wird wiederholt. Wenn die Auswahl 1.000 Nicht-Leerzeichen enthält, wird die Markierung gesetzt und das Makro fährt mit dem nächsten Zeichenblock fort.

_Hinweis: _

Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der WordTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.

WordTips ist Ihre Quelle für kostengünstige Microsoft Word-Schulungen.

(Microsoft Word ist die weltweit beliebteste Textverarbeitungssoftware.) Dieser Tipp (7870) gilt für Microsoft Word 97, 2000, 2002 und 2003. Sie finden eine Version dieses Tipps für die Multifunktionsleistenschnittstelle von Word (Word 2007) und später) hier: