Shelley sta sviluppando una macro che cambia tutte le permutazioni di maiuscole di “a condizione che” (“a condizione che”, “a condizione che”, ecc.)

in minuscolo. È abbastanza facile da fare, ma se la frase inizia una frase, la “P” dovrebbe essere maiuscola. Shelley si chiede se ci sia un modo, in una macro, per dire se una frase come “purché” sia all’inizio di una frase.

Ci sono un paio di modi per farlo. Innanzitutto, puoi utilizzare Trova e sostituisci per eseguire ricerche e sostituzioni successive. La macro potrebbe fare quanto segue:

  1. Cambia tutte le varianti di “purché” in minuscolo.

  2. Cerca “. Purché” (punto, spazio, “purché”) e sostituiscilo con “. Purché” (lettere maiuscole corrette).

  3. Ripeti la ricerca e sostituisci nel passaggio 2 utilizzando altri segni di punteggiatura di fine frase come un punto esclamativo, un punto interrogativo o uno di quei segni di punteggiatura seguiti da virgolette.

Poiché ciò viene eseguito in una macro, il processo dovrebbe essere molto rapido.

Ecco un esempio di quello che potrebbe fare il lavoro:

Sub ChangeCase1()

Dim vFindText As Variant     Dim vReplaceText As Variant     Dim orng As Range     Dim i As Long

vFindText = Array(". provided that", _                       "! provided that", _                       "? provided that", _                       "."" provided that", _                       "!"" provided that", _                       "?"" provided that")

vReplaceText = Array(". Provided that", _                          "! Provided that", _                          "? Provided that", _                          "."" Provided that", _                          "!"" Provided that", _                          "?"" Provided that")



' Set all occurrences to lowercase     Set orng = ActiveDocument.Range     With orng.Find         .ClearFormatting         .Replacement.ClearFormatting         Do While .Execute(FindText:="provided that", _           Forward:=True, _           Wrap:=wdFindStop) = True             orng.Select             orng = "provided that"

orng.Collapse wdCollapseEnd         Loop     End With

' Account for end-of-sentence     For i = 0 To UBound(vFindText)

Set orng = ActiveDocument.Range         With orng.Find             .ClearFormatting             .Replacement.ClearFormatting             Do While .Execute(FindText:=vFindText(i), _               MatchCase:=True, _               Forward:=True, _               Wrap:=wdFindStop) = True                 orng.Select                 orng = vReplaceText(i)

orng.Collapse wdCollapseEnd             Loop         End With     Next End Sub

Un difetto di questo approccio è che non consente di “ammesso che” si verifichi all’inizio di un paragrafo. La macro potrebbe essere modificata per tener conto di tali istanze, ma sarebbe più complessa.

Tuttavia, è possibile utilizzare un approccio diverso. Questo si basa su un’impostazione piuttosto esoterica per la proprietà Case: wdTitleSentence. Questa impostazione cambia tutti i caratteri (con una notevole eccezione) in minuscolo e se la frase è all’inizio di una frase cambierà il primo carattere in maiuscolo. Ecco come potresti usarlo in una macro:

Sub ChangeCase2()

With Selection.Find         .ClearFormatting         .Wrap = wdFindContinue         .Forward = True         .Format = True         .MatchCase = False         .MatchWildcards = False         .Text = "provided that"

.Execute         While .Found             Selection.Range.Case = wdLowerCase             Selection.Range.Case = wdTitleSentence             Selection.Collapse Direction:=wdCollapseEnd             .Execute         Wend     End With End Sub

Notare che all’interno del ciclo While sono presenti due assegnazioni alla proprietà Case. Il primo imposta la selezione (ciò che è stato trovato) in minuscolo e il secondo lo imposta in maiuscolo per una frase. L’impostazione delle lettere minuscole è specifica per gestire “una notevole eccezione”

Ho accennato: se il testo “FORNITO” è all’inizio di una frase, l’impostazione wdTitleSentence non la cambierà, per qualche motivo, in “purché”. Tuttavia, cambierà “purché” (che “FORNITO” diventa dopo averlo impostato in minuscolo) in “purché” senza problemi.

_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 (13398) si applica a Microsoft Word 2007, 2010 e 2013.