Formulario de búsqueda

Hola buen día, mi pregunta es la siguiente, necesito hacer un formulario con un textbox donde ingrese una referencia, y un botón buscar que al oprimirlo me muestre en otro textbox la ubicación de dicha referencia....como lo hago??

Gracias por su respuesta

1 Respuesta

Respuesta
1

A ver una vez creado el formulario con los dos texbox y el botón de comando, en la hoja donde tienes los datos que vamos a buscar insertas un botón de comando. Haciendo doble clic sobre en en el evento clic escribimos:

Private Sub CommandButton1_Click

userform1.Show 'Esto muestra el formulario de búsqueda

End Suib

Luego en el editor de VBA insertamos un modulo y creamos un procedimiento:

Sub Buscar

'Declaramos dos variables tipo double

public fila as double

public columna as double

'Nos situamos en la primera celda donde queremos empezar a buscar la referencia en este caso en A1

activesheet.range("a1").activate

'Cogemos al formulario y trabajamos con el:

with userform1

'Mientras el valor de la celda sea diferente al valor del texbox que queremos buscar

Do while activecell.value <> textbox1.value

activecell.offset(1,0).Activate 'Baja una fila

'Si la celda activa esta vacía

if activecell.value="" then

''Muestras un mensaje

msgbox "No se ha encontrado la referencia que estás buscando",vbinformation, "Dato no encontrado"

exit sub 'Deja de ejecutar instrucciones

end if

Loop

'En caso de que la referencia se encuentre

fila= activecell.row

columna=activecell.column

texbox2="Dato encontrado en la celda" & "(" & fila & "," & columna & ")"

end with

End Sub

Ahora nos vamos al botón que tenemos en el formulario en el cual vamos a hacer clic para buscar el dato y escribimos lo siguiente

Private Sub Commanbutton2_Click()

if textbox1.value ="" then 'Si el texbox esta vacío mostramos un mensaje

msgbox "Debes introducir una referencia para poder realizar la búsqueda",vbinformation, "Introduce una referencia"

Texbox1. Setfocus 'Devolvemos el cursor al texbox para que podamos escribir la referencia

exit sub

else 'En caso contrario, es decir, si el texbox es diferente de vacío entonces...

call Buscar 'Llamamos al procedimiento buscar que creamos en el modulo creado antes

end if

End Sub

Bueno amigo, espero que te sirva mi respuesta, si tienes alguna duda me lo comentas y si te ha servido no te olvides de finalizar la pregunta.

Un slaudo.

Gracias por la respuesta, pero me genera un error en el momento de dar click en el commandbutton2 para en la linea Do while activecell.value <> textbox1.value y me arroja el error '424' en tiempo de ejecución.

Como soluciono esto? Muchas gracias

Tienes razón que da algún error que otro, es lo que tiene escribirlas sin probarlas en el excel... je je, aquí la tienes de nuevo, está está probada y funciona: En un modulo escribimos esto:

'Declaramos dos variables tipo double
Public fila As Double
Public columna As Double
Sub Buscar()
'Nos situamos en la primera celda donde queremos empezar a buscar la referencia en este caso en A1
ActiveSheet.Range("a1").Activate
'Cogemos al formulario y trabajamos con el:
With UserForm1
'Mientras el valor de la celda sea diferente al valor del texbox que queremos buscar
Do While ActiveCell.Value <> .TextBox1.Value
ActiveCell.Offset(1, 0).Activate 'Baja una fila
'Si la celda activa esta vacía
If ActiveCell.Value = "" Then
''Muestras un mensaje
MsgBox "No se ha encontrado la referencia que estás buscando", vbInformation, "Dato no encontrado"
Exit Sub 'Deja de ejecutar instrucciones
End If
Loop
'En caso de que la referencia se encuentre
fila = ActiveCell.Row
columna = ActiveCell.Column
MsgBox "Dato encontrado en la CELDA" & " " & (fila & "," & columna), vbInformation, "FELICIDADES"
End With
End Sub

En el botón del formulario donde vamos a hacer click escribimos los siguiente:

Private Sub CommandButton1_Click()
If TextBox1.Value = "" Then 'Si el texbox esta vacío mostramos un mensaje
MsgBox "Debes introducir una referencia para poder realizar la búsqueda", vbInformation, "Introduce una referencia"
TextBox1.SetFocus 'Devolvemos el cursor al texbox para que podamos escribir la referencia
Exit Sub
Else 'En caso contrario, es decir, si el texbox es diferente de vacío entonces...
Call Buscar 'Llamamos al procedimiento buscar que creamos en el modulo creado antes
End If
End Sub

Espero que esta vez no te de errores, comentame cuando la pruebes y se te funciona no olvides finalizar la pregunta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas