VBA Reemplazar Cadena, Texto (Función Reemplazar)

VBA - Visual Basic for Application

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.

Screenshot VBA-Editor Replace Funtkion mit Parameterhinweisen
Parámetros de la función Replace

Expression

Esta es la cadena/texto original que se va a buscar por otra cadena.

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.

Bestseller No. 1

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!
Bestseller No. 1
Bestseller No. 2

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *