Please Note: This article is written for users of the following Microsoft Word versions: 97, 2000, 2002, and 2003. If you are using a later version (Word 2007 or later), this tip may not work for you. For a version of this tip written specifically for later versions of Word, click here: Highlighting Every Thousandth Character.
by Allen Wyatt
(last updated November 8, 2014)
Hakan needs a macro that counts the characters (without spaces) in a word document and highlights every 1000th letter. Creating such a macro is rather straightforward—you simply need to examine all the characters in a document, in turn, and only count those that aren't spaces. The following is a simple little macro that will do just that:
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
The macro is simple enough; it examines the Characters collection, which contains all the individual characters in a document. The problem with the macro is that it is slow—very slow. Word isn't terribly efficient in examining individual characters in this manner. (It appears that each time you reference a member of the Characters collection, Word needs to examined all the characters from the beginning of the document, all over again.)
A different approach is to simply step through the document, expanding a selection until you get to 1,000 non-space characters.
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
Start this macro with the insertion point at the beginning of the document. The macro then grabs a thousand characters, assigns that selection to a variable (sRaw), creates a variable that has all the spaces removed from it (sProc) and then figures the length of sProc. If it is less than 1,000, then the selection is extended by however many characters it was short and the process is repeated. When the selection contains 1,000 non-space characters, then the highlight is set and the macro goes on to the next block of characters.
WordTips is your source for cost-effective Microsoft Word training. (Microsoft Word is the most popular word processing software in the world.) This tip (7870) applies to Microsoft Word 97, 2000, 2002, and 2003. You can find a version of this tip for the ribbon interface of Word (Word 2007 and later) here: Highlighting Every Thousandth Character.
Do More in Less Time! Are you ready to harness the full power of Word 2013 to create professional documents? In this comprehensive guide you'll learn the skills and techniques for efficiently building the documents you need for your professional and your personal life. Check out Word 2013 In Depth today!
Want a fast way to add brackets around a selected word? You can use this simple macro to add both brackets in a single step.Discover More
Need to use a macro to create a text string? One easy way to do it is to use the String function, described in this tip.Discover More
Wouldn't it be great if Word could execute a macro every time someone typed in a particular keyword or phrase? Word may ...Discover More
Got a version of Word that uses the menu interface (Word 97, Word 2000, Word 2002, or Word 2003)? This site is for you! If you use a later version of Word, visit our WordTips site focusing on the ribbon interface.