jueves, 21 de noviembre de 2013

Macro ReplaceInAll - VBA Excel

He decido retomar el blog para compartir algunas herramientas que he creado yo y que me son de mucha utilidad.

Habitualmente trabajo con Microsoft Office, así que he aprendido a programar un poco en VBA para solucionarme algunos problemas en el día a día.

En este caso, me he dado cuenta de que con frecuencia quiero cambiar algo (normalmente, una palabra) de la fórmula de muchas celdas de Excel, que no tienen por qué ser adyacentes. Por ejemplo: Cambiar todas las referencias a $B$4 por $J$5, o por ejemplo cambiar todas las fórmulas de "AVERAGE" a "MIN"

Hasta ahora, tenía que cambiarlo manualmente. Gracias al siguiente macro, puedo cambiar el texto de todas las celdas que tenga seleccionadas:

Sub ReplaceInAll()
Dim xcell As Range
Dim Otxt As String, Ftxt As String
Otxt = InputBox("Introduce el texto a buscar y sustituir en todas las celdas seleccionadas:" & vbCr & vbCr & "ESTA ACCIÓN NO SE PUEDE DESHACER", "Sustituye en las fórmulas")
If Otxt <> "" Then
    Ftxt = InputBox("Introduce el texto a introducir en lugar de '" & Otxt & "':", "Sustituye en las fórmulas")
    If Ftxt = "" Then If MsgBox("Eliminar todas las ocurrencias de '" & Otxt & "'?" & vbCr & vbCr & "ESTA ACCION NO SE PUEDE DESHACER", vbExclamation + vbOKCancel) <> vbOK Then Exit Sub
    For Each xcell In Selection
        xcell.Formula = Replace(xcell.Formula, Otxt, Ftxt, , , vbTextCompare)
    Next xcell
End If
End Sub
Para usarlo sólo hay que copiarlo en un módulo en el editor de VBA de Excel y ejecutarlo.



Espero que resulte útil!

No hay comentarios:

Publicar un comentario