jueves

Sustituir contra Reemplazar (Substitute vrs Replace)

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

SUBSTITUTE:
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


REPLACE
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


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 jeje

Saludos desde Honduras

miércoles

Cansada de besar sapos

Estas escenas son buenisimas, de esta pelicula, vean este segmento jeje



Saludos

martes

Toy Story 3

Esta tambien esta buenisima amigos



Saludos desde Honduras

Cars 2

Hola
Me encantan estas peliculas jeje asi que se las recomiendo



Saludos

domingo

ComboBox Dinamico (Userform)

Hola amigos!
Se conoce que existe una forma de llenar listas desplegables de modo dinamico, algo relacionado lo vimos en este tema: Listas Desplegables sin Desref y con Indice
Pues aqui un poco similar se trata este post y es llenar ComboBox desde un userform y para los que aun desconecen como hacerlo, aqui les adjunto un ejemplo, en el cual veran dos tipos, como importante, si exitieran espacios en blanco en la lista de datos (es decir celdas vacias) con codigo VBA se supera ese inconveniente, llenando sin espacios el ComboBox, automaticamente...



No es dificil, ni nada complicado, puesto que basta crear un bucle, para marcar el rango usado, condicionarlo y listo

Aqui los dos codigos:

Private Sub ComboBox1_enter()
Me.ComboBox1.Clear
For x = 2 To Range("A" & Rows.Count).End(xlUp).Row
If Cells(x, 1) <> Empty Then ComboBox1.AddItem Range("A" & x).Value
Next
End Sub


Private Sub ComboBox2_enter()
Me.ComboBox2.Clear
For Each celda In Range("A2:A" & Range("A" & Rows.Count).End(xlUp).Row)
If celda <> Empty Then ComboBox2.AddItem celda.Value
Next
End Sub



Y les adjunto el archivo para pruebas/revision/analisis/comentarios

Espero les guste o sea de utilidad

Saludos desde Honduras