Sostituzione simultanea in fogli di lavoro e commenti (Microsoft Excel)
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.