Evidenziando ogni millesimo carattere (Microsoft Word)
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, l’evidenziazione viene impostata 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 (7870) si applica a Microsoft Word 97, 2000, 2002 e 2003. È possibile trovare una versione di questo suggerimento per l’interfaccia a nastro di Word (Word 2007 e più tardi) qui: