Código vba para buscar datos

Engo una base de datos donde en la "columna A" está la Fecha (se pondría solo los números y automático se pondría los “/”), "columna B" Turno día o Noche(ComboBox1), "columna C" Idnombre del doctor(ComboBox2), en estas columnas serán para poner las condiciones los datos a buscar.

Ojo todos los datos buscados serán solo de una solo fila de celdas, y mostrarlo en un userform.

Las de más columnas de otros datos: "D" medicina, "E" receta, "F" costo, etc; se aumentaran automáticamente, en los textboxs del userform, y aumentare más columnas y más textbox de acuerdo a mis necesidades que tengo de acuerdo al código.

Poner la Hoja1, el userform1, los botones de acuerdo lo que pide y lo adecuas

1 Respuesta

Respuesta
1

En el ejemplo que muestras se comprende que los datos a buscar corresponden al rango de fechas que hay en la columna A, y conforme a la fecha así son los datos a incluir en los textbox de tu userform, entonces a mi parecer sería conveniente la búsqueda de datos seleccionando la fecha por medio de un combobox. ¿Crees conveniente que así seria la solución?

Buen día, Hhrens, los datos a buscar son con los tres opciones de la parte superior (fecha, turno y doctor), por qué en la columna A, va ver varias fechas repetidas con ambos turnos y diferentes doctores.

La sugerencia que realizas con la fecha con un combobox está perfecto,

Te dejo los códigos para que los adaptes a tu proyecto.

Private Sub ComboBox1_Change() 'ACA BUSCO LA FECHA
'AL HACER UN CAMBIO, LIMPIO LOS TEXTBOX
    Me.TextBox1 = ""
    Me.TextBox2 = ""
    Me.TextBox3 = ""
    Me.TextBox4 = ""
    Me.TextBox5 = ""
End Sub
Private Sub ComboBox1_Enter()
'DECLARO LAS VARIABLES
    Dim Fil, Fin, Reg As Integer
    Fil = 4
    Do While Hoja1.Cells(Fil, 1) <> ""
        Fil = Fil + 1
    Loop
Fin = Fil - 1
Me.ComboBox1.Clear
'BUSCO LOS DATOS
    With Hoja1
        For Fil = 4 To Fin
            Reg = WorksheetFunction.CountIf(.Range(.Cells(1, 1), .Cells(Fil, 1)), .Cells(Fil, 1))
                If Reg = 1 Then
                    Me.ComboBox1.AddItem .Cells(Fil, 1)
                End If
        Next Fil
    End With
End Sub
Private Sub CommandButton1_Click()
'DECLARO LAS VARIABLES
Dim Fil, Fin As Integer
If Me.ComboBox1 = "" Then
Me.ComboBox1.BackColor = &HC0C0FF
MsgBox "Para buscar los datos, seleccione una fecha", vbInformation, "NO HAY FECHA"
Me.ComboBox1.SetFocus
Me.ComboBox1.BackColor = &HFFFFFF
Exit Sub
'End If
Else
    Fil = 4
    Do While Hoja1.Cells(Fil, 1) <> ""
        Fil = Fil + 1
    Loop
    Fin = Fil
'AGREGO LOS DATOS A LOS TEXTBOX
    For Fil = 4 To Fin
        If ComboBox1.Value = Format(Hoja1.Cells(Fil, 1), "dd/mm/yyyy") Then
            Me.TextBox1 = Hoja1.Cells(Fil, 2)
            Me.TextBox2 = Hoja1.Cells(Fil, 3)
            Me.TextBox3 = Hoja1.Cells(Fil, 4)
            Me.TextBox4 = Hoja1.Cells(Fil, 5)
            Me.TextBox5 = Hoja1.Cells(Fil, 6)
            Exit For
        End If
    Next Fil
End If
End Sub
Espero te sirva.

Bien gracias,

La macro esta bien incluso le diste más valor agregado, solo que deseo ajustarle algunos detalles y disculpe creo no me supe hacerme entender.

Los comboboxs (Fecha, turno y doctor) deben ser rellenados obligatoriamente en forma manual por el usuario (debe tener el mismo mensaje cuando falta datos en los Comboboxs 1, 2 y 3; como de la fecha), los demás Textboxs se deben llenar automáticamente con el botón buscar.

Visualiza el siguiente imagen.

Una disculpa por la demora Felipe Principiante, ¿tienes correo para enviarte un ejemplo?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas