sábado, 28 de noviembre de 2020

Quinta parte del Crud. Código para el botón Buscar

 Continuamos con el código que debe tener el Botón Buscar, para ello crearemos una macro.

Antes de nada como no tenemos ningún módulo donde irán todas nuestras macros, lo primero que debemos ir a la pestaña Programador, y pulsaremos en el botón que se encuentra más a la izquierda, que pone Visual Basic, posteriormente en la ventana que nos sale pulsaremos con el botón derecho de nuestro ratón sobre nuestro archivo, e insertaremos un un módulo.

Ahora vamos a cambiarle el nombre y pondremos Mimodulo, cada uno puede ponerle el nombre que quiera.





Continuaremos en MiModulo e insertaremos una macro que llamaremos Buscar. Esto lo hacemos escribiendo en la parte de la derecha en blanco 

Sub Buscar(), al pulsar los paréntesis y posteriormente el botón Intro nos saldrá en la parte de abajo end sub, quedando de la forma de la próxima fotografía.



En la parte interior de la macro que hemos llamado Buscar introduciremos el siguiente código.







Código del Botón Buscar:

Sub Buscar()

With BBDD

    'recuperando codigo articulo

    'variable que almacena el codigo del articulo

    Dim Id As Long

      'obtenemos lo introducido el formulario principal, el codigo

    Id = Formulario.Cells(3, 3)

     'Vamos a buscar en la hoja inventario

    Dim fila, filamax As Long

    'calculamos la fila máxima con datos de la hoja2

    filamax = .UsedRange.Rows.Count

    'continuamos con un bucle

    For fila = 2 To filamax

      If (Application.WorksheetFunction.CountIf(.Columns(1), Id)) >= 1 Then

            'si encuentra el valor del codigo

            'funcion BuscarV

            Formulario.Cells(5, 3) = Application.WorksheetFunction.VLookup(Id, .Range("A:J"), 2, 0)

            Formulario.Cells(7, 3) = Application.WorksheetFunction.VLookup(Id, .Range("A:J"), 5, 0)

            Formulario.Cells(9, 3) = Application.WorksheetFunction.VLookup(Id, .Range("A:J"), 6, 0)

            Formulario.Cells(11, 3) = Application.WorksheetFunction.VLookup(Id, .Range("A:J"), 7, 0)

            Formulario.Cells(13, 3) = Application.WorksheetFunction.VLookup(Id, .Range("A:J"), 8, 0)

            Formulario.Cells(15, 3) = Application.WorksheetFunction.VLookup(Id, .Range("A:J"), 9, 0)

            Formulario.Cells(17, 3) = Application.WorksheetFunction.VLookup(Id, .Range("A:J"), 10, 0)

     Else

       MsgBox "El campo Código esta vacio o un número no encontrado, introduce el Código a buscar"

             Formulario.Cells(5, 3) = ""

             Formulario.Cells(7, 3) = ""

             Formulario.Cells(9, 3) = ""

             Formulario.Cells(11, 3) = ""

             Formulario.Cells(13, 3) = ""

             Formulario.Cells(15, 3) = ""

             Formulario.Cells(17, 3) = ""

            Exit Sub

      End If

    Next fila

    'posicionar en celda codigo

    Formulario.Cells(3, 3).Select

End With

End Sub

Una vez escrito el código, pasaremos asignarle dicha macro a nuestro botón. En la hoja hemos BBDD, hemos introducido unos registros que posteriormente eliminaremos, solamente será para comprobar que funciona la macro buscar. 

Asignaremos esta macro a nuestro botón pulsando con el ratón derecho en nuestro botón














Pulsaremos sobre Asignar Macro y nos saldrá la siguiente pantalla


Aquí elegiremos nuestra macro Buscar y pulsaremos en el botón Aceptar.











Este código lo que hace es que introducimos en la celda (3,3) de la hoja formulario, que es el Id del formulario, un número y nos obtiene mediante la función BuscarV el resto de datos introducidos en la misma fila.

Esta linea filamax = .UsedRange.Rows.Count nos calcula la última fila con datos, por eso el bucle empieza a buscar en la fila 2 hasta la última línea y si encuentra el datos nos lo muestra en el formulario. La búsqueda es por el Id.

En el caso de que no encuentre el Id nos dará un mensaje de que no has introducido un número o el mismo no existe, y limpiará todos los campos del formulario, menos el Id introducido.

En el caso de que os salda un número en la parte de la fecha, es por el motivo de que dicho campo debe tener el formato fecha.

No hay comentarios:

Publicar un comentario

Gracias por participar en esta página.