Macro, mostrar datos repetidos...

Hola, tengo una macro que me autofiltra según 2 datos ingresados en un INPUTBOX... Hasta el momento funcionaba bien, pero ahora necesito agregarle que al momento de filtrar me encuentre los datos exactamente... Más que todo en el segundo dato de búsqueda (style number)... Porque por ejemplo: si ingreso el dato 826, al momento de hacer el filtro me tira el dato 78826 porque este dato también contiene el numero 826. Pero no quiero que me muestre ese dato, sino que me muestre SOLO el 826... Pero si el dato 826 no existe, que me muestre un mensaje que diga: - Style number XXXX has not been found.
Ahora bien, si el dato que ingreso, 826 existe 2 o más veces... Quiero que me los muestre... Porque hasta el momento, solo me muestra el primero que me encuentra y no los demás...
Ah! También necesito que si en las primera búsqueda (palabra_a_buscar).. Le ingreso un dato que no existe, pues que me muestre un mensaje diciendo: (The customer number XXXXX has not been found.)
Me gustaría que me ayudaras haciéndole modificaciones a la macro que ya tengo, agregándole lo que necesito... De antemano, mil gracias...
Sub CommandButton1_Click()
Dim n As Range
Dim c As Range
palabra_a_buscar = InputBox("Please key the customer number", "Search Quotes by Price Changes Team")
If palabra_a_buscar = "" Then Exit Sub
Set n = Cells.Find(What:=palabra_a_buscar)
i = 1
Application.ScreenUpdating = False
Range("B16").Select
MsgBox "Your entry has been found " & UCase(palabra_a_buscar) & "."
Selection.AutoFilter Field:=2, Criteria1:=n.Value
Set n = Nothing
If palabra_a_buscar = 0 Then MsgBox "The customer number " & UCase(palabra_a_buscar) & "hasn't been found.": Exit Sub
look_for_style = InputBox("Please key the style number you need to find into customer number " & UCase(palabra_a_buscar) & ".")
If look_for_style = "" Then Exit Sub
Set c = Cells.Find(What:=look_for_style)
i = 1
Application.ScreenUpdating = False
Range("B16").Select
MsgBox "Style number " & UCase(look_for_style) & " has been found."
Selection.AutoFilter Field:=4, Criteria1:=c.Value
Set c = Nothing
If look_for_style = 0 Then MsgBox "The style number " & UCase(look_for_style) & "hasn't been found.": Exit Sub
End Sub
Si tienes algún código para resetear todos estos procesos y regresar todo al inicio (quitando hasta el autofiltro, para que al volver a ejecutar la macro me ponga el autofiltro de nuevo) te lo agradecería muchísimo...
>Saludos,
>Guztabo, desde El Salvador.

1 Respuesta

Respuesta
1
A ver si funciona la cosita:
Sub CommandButton1_Click()
Dim n As Range
Dim c As Range
palabra_a_buscar = InputBox("Please key the customer number", "Search Quotes by Price Changes Team")
If palabra_a_buscar = "" Then Exit Sub
Set n = Cells.Find(What:=palabra_a_buscar, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False)
If n Is Nothing Then
MsgBox"Style number " & palabra a buscar & " has not been found"
End If
Application.ScreenUpdating = False
Range("B16").Select
MsgBox "Your entry has been found " & UCase(palabra_a_buscar) & "."
Selection.AutoFilter Field:=2, Criteria1:="=" & n & ""
Set n = Nothing
If palabra_a_buscar = 0 Then MsgBox "The customer number " & UCase(palabra_a_buscar) & "hasn't been found.": Exit Sub
look_for_style = InputBox("Please key the style number you need to find into customer number " & UCase(palabra_a_buscar) & ".")
If look_for_style = "" Then Exit Sub
Set c = Cells.Find(What:=look_for_style, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False)
Application.ScreenUpdating = False
Range("B16").Select
MsgBox "Style number " & UCase(look_for_style) & " has been found."
Selection.AutoFilter Field:=4, Criteria1:="=" & c & ""
Set c = Nothing
If look_for_style = 0 Then MsgBox "The style number " & UCase(look_for_style) & "hasn't been found.": Exit Sub
End Sub
Vamos a ver ya esta corregido el problema de que no te encuentre el valor exacto, también el mensaje de aviso si no lo encuentra, pero en lo referente a la búsqueda que te muestre todos los datos encontrados con el mismo valor, no va a ser posible con este código, la macro se detiene en la primera que encuentra, para que te muestre todas hay que ir recogiendo cada vez que lo encuentra la situación de la celda y posteriormente seleccionarlas todas.
>Un saludo
>Julio
Hola, mil gracias, se ve mucho mejor que como yo lo había creado... pero te cuento que no me ejecuta la macro porque al tratar de correrla me muestra el siguiente error: "Compile error: Named argument not found" y me señala esta parte:
Set n = Cells.Find(What:=palabra_a_buscar, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=
        False, SearchFormat:=False)
Pero más especifico, me sombrea la parte de:
False, SearchFormat:=False)
Supongo que me mostrara lo mismo en la segunda parte de la macro (en la parte de look_for_style) donde se hace el mismo proceso...
Me puedes ayudar...
Mil gracias!
>Saludos,
>Guztabo,
Vale pues quita esa condición de búsqueda:
Set n = Cells.Find(What:=palabra_a_buscar, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=
        False)
Pruebalá y me cuentas.
>Un saludo
>Julio
Perdón por tardar en responder... Mil gracias por la ayuda, la verdad hoy si ya busca los datos que tiene que buscar... por ejemplo: Si ingreso el numero 4189, ya no me muestra como resultado 64189 (es lo que me sucedía antes)... lo único malo, es que el mensaje de error no me lo muestra, el que me tiene que indicar que el dato ingresado no ha sido encontrado... no se como hacer, ¿me ayudas?
AH! También, no se te olvide, si tienes por ahí alguna forma de "reset" todo el proceso, me ayudarías muchísimo... (tengo también un CommandButton1 llamado "Reset" para deshacer la búsqueda y quitar el filtro automático pero no se como configurarlo para que haga eso)
Mil gracias nuevamente!
>Guztabo
Vale con tantas prisas no te puse los guiones bajos en la variable palabra a buscar ( la verdad es que era una tontería, si te hubieses repasado la macro lo habías detectado tú; algo tenías que comprobar que todo, todo echo sin mirar nada... pufffffff)
Vale el Msgbox queda así:
MsgBox "Style number " & palabra_a_buscar & " has not been found"
Y respecto al Reset de la variable palabra_a_buscar con que pongas Empty al final de la macro ya se queda vacía para introducir valor de nuevo, pero esto no lo entiendo porque la macro no ejecuta ningún ciclo cuando llega al final se para y cuando vuelves a ejecutarla los valores anteriores se han perdido y no mantiene los valores pero en fin
palabra_a_buscar=Empty
Set n=Nothing
Set c= Nothing
Espero que ya te funcione correctamente.
>Un saludo
>Julio

Añade tu respuesta

Haz clic para o
El autor de la pregunta ya no la sigue por lo que es posible que no reciba tu respuesta.

Más respuestas relacionadas