Los estudiantes de Dorothy están personalizando un libro de trabajo de simulación de chequera, reemplazando el nombre predeterminado por el suyo. Por ejemplo, quiere que busquen «Jason Anderson» y reemplacen el nombre por «Sue Smith».

Hay 22 apariciones de «Jason Anderson» en los cuadros de texto de las ocho pestañas de la hoja de trabajo, y varias más en las hojas de trabajo.

Dorothy se pregunta cómo puede buscar y reemplazar todas las ocurrencias de la hoja de trabajo y todas las ocurrencias de comentarios a la vez.

No hay forma de hacer esto sin usar una macro. La macro debería revisar cada celda del libro de trabajo, cada comentario y cada cuadro de texto para ver si es necesario realizar cambios. El siguiente es un ejemplo de cómo se puede hacer esto:

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 solicita al usuario que ingrese un nuevo nombre y luego busca en celdas, comentarios y cuadros de texto para ver si hay apariciones del nombre predeterminado («Jason Anderson»). Si es así, entonces se realiza el reemplazo apropiado.

Si no desea utilizar macros para realizar la búsqueda, tal vez sería útil una reestructuración del libro de trabajo. Por ejemplo, podría crear una «hoja de trabajo de ingreso de datos» en la que se ingrese información común, como el nombre de la persona. En las otras hojas de trabajo, se hace referencia al nombre de la hoja de trabajo de entrada de datos mediante fórmulas. Por lo tanto, un cambio en la hoja de trabajo de entrada de datos y el nombre se cambia en todas las demás hojas de trabajo.

El uso de este enfoque también puede funcionar con comentarios. Puede seleccionar el comentario o la forma y, en la barra de fórmulas, ingresar una fórmula de referencia como esta:

=MyName

Esto supone que el nombre del usuario, en la hoja de trabajo de entrada de datos, se ha asociado con el rango con nombre MyName. Si es necesario que haya información adicional en el comentario o la forma, entonces puede construir ese texto en una celda en la hoja de trabajo de entrada de datos y luego asignar el contenido de esa celda al comentario o forma, tal como se indica para el rango con nombre MyName.

_Nota: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.

link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador].

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (2614) se aplica a Microsoft Excel 2007, 2010, 2013 y 2016.