Hakan ha bisogno di una macro che conti i caratteri (senza spazi) in un documento word ed evidenzi ogni millesima lettera. Creare una macro di questo tipo è piuttosto semplice: devi semplicemente esaminare tutti i caratteri in un documento, a turno, e contare solo quelli che non sono spazi. Quella che segue è una semplice piccola macro che farà proprio questo:

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

La macro è abbastanza semplice; esamina la raccolta di caratteri, che contiene tutti i singoli caratteri in un documento. Il problema con la macro è che è lenta, molto lenta. Word non è molto efficiente nell’esaminare i singoli caratteri in questo modo. (Sembra che ogni volta che fai riferimento a un membro della raccolta di caratteri, Word ha bisogno di esaminare tutti i caratteri dall’inizio del documento, tutto da capo.)

Un approccio diverso è semplicemente scorrere il documento, espandendo una selezione fino ad arrivare a 1.000 caratteri non spazi.

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

Avvia questa macro con il punto di inserimento all’inizio del documento. La macro quindi acquisisce mille caratteri, assegna quella selezione a una variabile (sRaw), crea una variabile che ha tutti gli spazi rimossi da essa (sProc) e quindi calcola la lunghezza di sProc. Se è inferiore a 1.000, la selezione viene estesa di tutti i caratteri che era breve e il processo viene ripetuto. Quando la selezione contiene 1.000 caratteri non spazi, viene impostata l’evidenziazione e la macro passa al blocco di caratteri successivo.

_Nota: _

Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti WordTips), ho preparato una pagina speciale che include informazioni utili.

WordTips è la tua fonte di formazione economica su Microsoft Word.

(Microsoft Word è il software di elaborazione testi più popolare al mondo.) Questo suggerimento (7871) si applica a Microsoft Word 2007, 2010, 2013, 2016, 2019 e Word in Office 365. Puoi trovare una versione di questo suggerimento per vecchia interfaccia del menu di Word qui: