Gli studenti di Dorothy stanno personalizzando una cartella di lavoro di simulazione del libretto degli assegni, sostituendo il nome predefinito con il proprio. Ad esempio, desidera che cerchino “Jason Anderson” e sostituiscano il nome con “Sue Smith”.

Ci sono 22 occorrenze di “Jason Anderson” nelle caselle di testo in otto schede del foglio di lavoro e molte altre sui fogli di lavoro stessi.

Dorothy si chiede come può trovare e sostituire tutte le occorrenze del foglio di lavoro e tutte le occorrenze dei commenti contemporaneamente.

Non è possibile eseguire questa operazione senza utilizzare una macro. La macro dovrebbe esaminare ogni cella della cartella di lavoro, ogni commento e ogni casella di testo per vedere se è necessario apportare modifiche. Quello che segue è un esempio di come questo può essere fatto:

Sub ReplaceNames()

Dim sDefaultName As String     Dim sNewName As String     Dim sht As Worksheet     Dim cmt As Comment     Dim wks As Worksheet     Dim sCmt As String     Dim shp As Shape

sDefaultName = "Jason Anderson"

sNewName = InputBox("Enter your first and last name.", _       "Name Replacement")



' Replace cell text     For Each sht In ActiveWorkbook.Worksheets         sht.Cells.Replace what:=sDefaultName, _           Replacement:=sNewName, LookAt:=xlPart, _           SearchOrder:=xlByRows, MatchCase:=False, _           SearchFormat:=False, ReplaceFormat:=False     Next sht

' Replace comment text     For Each wks In ActiveWorkbook.Worksheets         For Each cmt In wks.Comments             sCmt = cmt.Text             If InStr(sCmt, sDefaultName) <> 0 Then                 sCmt = Application.WorksheetFunction. _                   Substitute(sCmt, sDefaultName, sNewName)

cmt.Text Text:=sCmt             End If         Next cmt     Next wks     Set wks = Nothing     Set cmt = Nothing

' Replace text box text     On Error Resume Next     For Each wks In ActiveSheet.Parent.Worksheets         For Each shp In wks.Shapes             With shp.TextFrame.Characters                 .Text = Application.WorksheetFunction.Substitute( _                   .Text, sDefaultName, sNewName)

End With         Next shp     Next wks End Sub

La macro richiede all’utente di immettere un nuovo nome e quindi cerca celle, commenti e caselle di testo per vedere se sono presenti occorrenze del nome predefinito (“Jason Anderson”). In tal caso, viene eseguita la sostituzione appropriata.

Se non si desidera utilizzare le macro per eseguire la ricerca, forse sarebbe utile una ristrutturazione della cartella di lavoro. Ad esempio, è possibile creare un “foglio di lavoro per l’inserimento dei dati” in cui vengono inserite informazioni comuni, come il nome della persona. Negli altri fogli di lavoro, il nome del foglio di lavoro per l’inserimento dei dati viene referenziato utilizzando le formule. Pertanto, una modifica nel foglio di lavoro di input dei dati e il nome viene modificato in tutti gli altri fogli di lavoro.

L’uso di questo approccio può funzionare anche con i commenti. È possibile selezionare il commento o la forma e, nella barra della formula, inserire una formula di riferimento come questa:

=MyName

Ciò presuppone che il nome dell’utente, nel foglio di lavoro per l’immissione dei dati, sia stato associato all’intervallo denominato MyName. Se sono necessarie informazioni aggiuntive nel commento o nella forma, è possibile costruire quel testo in una cella sul foglio di lavoro di input dei dati e quindi assegnare il contenuto di quella cella al commento o alla forma, proprio come indicato per l’intervallo denominato MyName.

_Nota: _

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

ExcelTips è la tua fonte di formazione economica su Microsoft Excel.

Questo suggerimento (2614) si applica a Microsoft Excel 2007, 2010, 2013 e 2016.