Saltar al contenido

Macro que me ubique una palabra

publicado

Hola a todos...quisiera saber como hacer para que esta macro me busque palabras que se encuentran dentro de una cadena de texto.

Ej. Combustible - Estación de Servicios Internacional - RAMIREZ GALEANO MILCIADES VIDAL......es decir escriba "Estación o Servicios o Vidal y que me lo encuentre

He probado de diferente manera y no pude dar con el...creo que mi problema está en esta linea....... palabra = VBA.Format(Me.TextBox2, "*")

Esta es la macro que dispongo

Private Sub CommandButton2_Click()
Dim palabra As String
With Range("E1:E" & Range("E" & Rows.Count).End(xlUp).Row)
    palabra = VBA.Format(Me.TextBox2, "*")
    Set fil = .Find(palabra, After:=ActiveCell, LookIn:=xlValues, LookAt:=xlWhole, SearchDirection:=xlNext)
    If fil Is Nothing Then
        MsgBox "No hay datos con este criterio: " & Me.TextBox2, vbExclamation, "Error!"
        Me.TextBox2.SetFocus
        Exit Sub
    End If
    fil.Activate
    Me.Label2 = fil.Offset(0, -1) 'fil.Offset(0, 1) esto muestra lo mismo que Range("B" & fil.Row)
End With
Set fil = Nothing
End Sub

Private Sub CommandButton3_Click()
Me.Label2 = ""
Me.TextBox2.SetFocus
Range("E1").Select
End Sub


Private Sub TextBox2_Change()

End Sub

Private Sub UserForm_Initialize()
Me.Label2 = ""
Me.TextBox2.SetFocus
Range("E1").Select
End Sub

Featured Replies

publicado

Hola Ramón, saludos. Había pasado un tiempo apartado del foro pero aquí estoy de nuevo. Yo te recomendaría la función InStr(). Funciona de esta manera:

InStr(cadena1, cadena2)

busca la primera aparición de cadena2, en cadena1. Si encuentra cadena2 en cadena1, devuelve la posición en la cadena de dicha aparición, y cero si no encuentra. Por ejemplo,

InStr("Hola Mundo", "la")

devuuelve 3, porque se encontró la cadena "la" comenzando justo en el tercer carácter de la cadena origen "Hola Mundo". En cambio

InStr("Hola Mundo", "xa")

devuelve cero porque no se encontró la coincidencia. Para búsquedas despreciando mayúsculas y minúsculas podrías intentar comparando las cadenas convertidas a minúsculas (o mayúsculas):

InStr( lcase(cadena1), lcase(cadena2) )

----------------------

En otro orden de ideas, veo que tratas de realizar la búsqueda a partir de un dato contenido en una celda de hoja de cálculo, y para ello invocas un formulario. Si vas a buscar valores en un Worksheet, me parecería más lógico colocar simplemente un botón (CommanButton) en dicha hoja de cálculo, y programar una macro invocada por dicho botón.

Aunque sólo tú conoces bien las necesidades de tu proyecto, o cómo debe ser la interacción con el usuario, cualquier cosa sigue comentando

 

 

publicado
  • Autor

Hola YoelMonsalve como estas me alegro que estés de nuevo por acá , probe tu sugerencia, pero nuevamente no pude dar con lo que pretendo te dejo el linck de mi archivo...desde ya muy agradecido por tu tiempo y paciencia..abrazo desde Paraguay  

https://drive.google.com/drive/folders/0B5-NlIfimBMURGRzeDh6bEJGaVU

https://onedrive.live.com/?id=E55EF42198BD63DF%213096&cid=E55EF42198BD63DF

publicado

Hola ramonvar,

Prueba a sustituir 

lookat:=xlWhole

por 

lookat:=xlPart

y comentas

publicado
  • Autor
Cita

 

Hola Nacho...ni te imaginas como te agradezco, le diste en la tecla exacta...mil gracias por tu tiempo y paciencia 

Abrazo desde Paraguay

Podemos dar por cerrado este tema

  • Silvia bloqueó este tema

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.