Saltar al contenido

Recommended Posts

publicado

Hola a todos

Como el titulo lo indica, estas dos funciones son muy similares, pero "Replace" tiena ventaja... explico

Ayuda de la funcion Application.WorksheetFunction.Substitute: El método Substitute reemplaza el texto nuevo por el texto original dentro de una cadena de texto. Utilice el método Substitute cuando desee reemplazar texto específico en una cadena de texto; use el método Replace si desea reemplazar cualquier texto que aparezca en una ubicación específica dentro de una cadena de caracteres.

Sintaxis

expresión.Substitute(Arg1, Arg2, Arg3, Arg4)

expresión Variable que representa un objeto WorksheetFunction.

Ayuda de la funcion VBA.Replace: Devuelve una cadena en la que se reemplazó una subcadena especificada con otra subcadena un número especificado de veces.

Sintaxis

Replace(expresión, encontrar, reemplazarCon [, inicio[, Contar[, comparar]]])

Imaginemos una columna con datos, y que a esta en cada celda se debe reemplazar o sustituir algunos caracteres, pues bien he elaborado un archivo en el cual pueden realizar pruebas y notar, que la ventaja de VBA.Replace es que se puede reemplazar los caracteres cuantas ( Contar[ ) veces necesite dentro de la cadena de texto, por el contrario Substitute tiene la limitante de poder hacerlo solo una vez

Sub sustituir()
Dim texto1 As String
Dim texto2 As String
texto1 = Application.InputBox("Sustituir!", "Texto1", , , , Type:=1 + 2)
texto2 = Application.InputBox("Sustituir!", "Texto2", , , , Type:=1 + 2)
With Application
.ScreenUpdating = False
For x = 2 To Range("A" & Rows.Count).End(xlUp).Row
Cells(x, 1) = .Trim(.Substitute(Cells(x, 1), texto1, "", 1))
Cells(x, 1) = .Trim(.Substitute(Cells(x, 1), texto2, "", 1))
Next x
.ScreenUpdating = True
End With
Range("A1").Select
End Sub[/PHP]

[PHP]Sub reemplazar()
Dim texto1 As String
Dim texto2 As String
texto1 = Application.InputBox("Reemplazar!", "Texto1", , , , Type:=1 + 2)
texto2 = Application.InputBox("Reemplazar!", "Texto2", , , , Type:=1 + 2)
With Application
.ScreenUpdating = False
For x = 2 To Range("A" & Rows.Count).End(xlUp).Row
Cells(x, 1) = VBA.Trim(Replace(Cells(x, 1), texto1, "", 1, 1))
Cells(x, 1) = VBA.Trim(Replace(Cells(x, 1), texto2, "", 1, 1))
Next x
.ScreenUpdating = True
End With
Range("A1").Select
End Sub
[/PHP]

NOTA: No confundir ninguna de las dos funciones arriba con Application.WorksheetFunction.Replace si necesitan ver la diferencia busquen en la ayuda de VBA en Excel

Espero sea de mucha utilidad y experimento :)

Saludos desde Honduras

Reemplazar texto en cadena (macro).zip

Conéctate para comentar

Podrás dejar un comentario después de conectarte



Conéctate ahora
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.