VBA es maravilloso para automatizar varias cosas en el mundo de Microsoft Office y crear algunas herramientas agradables para trabajar más eficazmente.
Un caso típico que se da no sólo en VBA, sino también en muchos otros lenguajes de programación, es la reemplazo de un texto por otro texto. El reemplazo puede ser completo, o sólo se quiere reemplazar una subcadena (texto parcial) de la cadena original. Por ejemplo, podría ser un extensión de archivo en un nombre de archivo que se va a sustituir.
Explicación del parámetro de la función Reemplazar
Para ello, VBA dispone de la función Replace, que tiene los siguientes parámetros y valores de retorno.

Expression
Find
Este es el texto o fragmento de texto (subcadena) que se debe encontrar en el texto original.
Replace
Es el texto con el que se va a sustituir el texto buscado.
Start
Este es un parámetro opcional. Aquí puede especificar en qué punto/posición del texto original debe comenzar la búsqueda y sustitución. Es un valor numérico. La primera letra comienza en 1. Esto es un poco inusual, ya que en otros lenguajes de programación siempre comienza en cero. El valor por defecto es 1.
Count
También es un parámetro opcional. Si la subcadena que está buscando aparece varias veces en el texto original, puede especificar aquí con qué frecuencia debe reemplazarse la subcadena. Esto es práctico si sólo desea reemplazar la primera aparición de una cadena.
Compare
Este parámetro numérico, que determina el método de comparación, rara vez es necesario. El valor por defecto es suficiente aquí. En caso contrario existe
[-1] vbUseCompareOption
Cuando se utiliza este parámetro, una declaración de opción-comparar debe preceder al procedimiento respectivo.
[0] vbBinaryCompare
Compara la representación binaria de cadena buscada y cadena buscada.
[1] vbTextCompare
Se realiza una comparación de texto entre la cadena buscada y la cadena buscada.
[2] vbDatabaseCompare
Utilizado sólo en Microsoft Access para comparaciones dentro de bases de datos.
Valor devuelto
El valor de retorno es la nueva cadena con los parámetros reemplazados.
Ejemplos de aplicación Función Reemplazar en VBA
Ejemplo sencillo sin parámetros opcionales
Aquí se sustituyen todas las subcadenas encontradas por el texto a sustituir.
Private Sub ReplaceExample1()
Dim strOriginal As String.
Dim strSearch As String.
Dim strReplace As String.
Dim strNew As String.
strOrignal = "¡Mi abuela monta en moto en el gallinero!".
strSearch = "Motocicleta"
strReplace = "Triciclo"
strNew = Replace(strOrignal, strSearch, strReplace)
'Salida a ventana directa
Debug.Print strNew
End Sub
Salida/Resultado: ¡Mi abuela monta un triciclo en el gallinero!
Reemplazar sólo cierto número en la cadena
En este ejemplo, sólo se reemplaza una ocurrencia del texto buscado porque se ha definido el parámetro opcional Count.
Private Sub ReplaceExample2()
Dim strOriginal As String.
Dim strSearch As String.
Dim strReplace As String.
Dim strNew As String.
strOrignal = "¡Si le das opio a Opi, el opio matará a Opi!".
strSearch = "Opi"
strReplace = "Omi"
strNew = Replace(strOrignal, strSearch, strReplace, Count:=1)
Debug.Print strNew
End Sub
Salida/Resultado: ¡Da Omi opio, opio mata a opi!
Buscar cadena a partir de cierta posición
Este ejemplo muestra cómo se busca una cadena a partir de una determinada posicióne (20) y se reemplazan las ocurrencias de la cadena buscada. Sólo se devuelve la cadena de la posición inicial.
Private Sub ReplaceExample3()
Dim strOriginal As String.
Dim strBuscar Como String.
Dim strReplace As String
Dim strNew As String
strOrignal = "¡Si le das opio a opi, el opio matará a opi!"
strSearch = "Opio"
strReplace = "Omi"
strNew = Replace(strOrignal, strSearch, strReplace, Start:=20)
Debug.Print strNew
Fin Sub
Salida/Resultado: ¡Mata a la abuela abuelo!
Reemplazar la última aparición de una cadena
Los parámetros opcionales Count y Start no son particularmente buenos para reemplazar la última ocurrencia de un carácter o cadena, ya que nunca se sabe lo larga que es la cadena original. Para reemplazar la última aparición de una cadena en una cadena, se debe utilizar la función strReverse. Esto simplemente invierte la cadena como si la leyeras al revés. Nuestro «Opi» se convierte entonces en «ipO». Así es como se puede hacer una sustitución desde atrás.
Private Sub ReplaceExample4()
Dim strOriginal As String.
Dim strSearch As String.
Dim strReplace As String.
Dim strNew As String.
strOrignal = "¡Si le das opio a Opi, el opio matará a Opi!".
strSearch = "Opi"
strReplace = "Omi"
strNew = StrReverse(Replace(StrReverse(strOrignal), StrReverse(strSearch), StrReverse(strReplace), Count:=1))
Debug.Print strNew
End Sub
Salida/Resultado: ¡Dale opio al abuelo, el opio mata a la abuela!