Buscar valor de textbox en excel

Expertos:

Tengo el siguiente caso donde la secuencia es la siguiente: Ingreso de usuario, aparece al frame con los options y acá se presenta un caso dilema:

Al momento que ingreso el usuario, debe de realizar una búsqueda en la hoja de control una vez que localiza el usuario, lo segundo que debe de hacer es buscar horizontalmente la celda vacía y posesionarse en ella. Por ejemplo ingreso el usuario PHERRERA y debería de posesionarse en la celda E4. Si fuera el usuario AMEZA deberá de colocarse en F2 y asi sucesivamente.

Ahorita los datos que se ingresan solo se colocan la primera fila...

1 respuesta

Respuesta
1

H o l a:

Envíame tu archivo con tu formulario para revisarlo.

Me explicas todas las reglas definidas para el control, por ejemplo, qué pasa si un usuario no registró su "Retorno de refrigerio" y ya estamos en horario de "Salida", entonces dónde se debe registrar la hora, en la columna de "Retorno de refrigerio" o en la columna "Salida".

Lo mismo para, Qué pasa si un usuario no registro su entrada, qué se debe hacer con el siguiente registro.

Cuando la secuencia de registro es correcta: entrada - salida refrigerio - retorno refrigerio - salida; no hay ningún problema con el registro, lo importante es definir cada una de las excepciones, para entonces programar en la macro lo que se debe hacer.

Otro ejemplo, ¿qué pasa si un usuario intenta registrar 2 veces en el mismo horario?

Tal vez tiene permiso para registrar antes de la salida de refrigerio, o no sé, todo depende de las políticas y reglas que se hayan definido en el registro.

Entonces cada una de las reglas se deben poner en la macro.


Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Alberto Meza Munoz” y el título de esta pregunta.

Correo enviado.

Gracias,

Alberto

H o l a:

Te anexo las macro para registrar según la celda vacía:

Private Sub CommandButton1_Click()
'Por.Dante Amor
    Set h = Sheets("Control")
    Set r = h.Columns("A")
    Set b = r.Find(Date, lookat:=xlWhole)
    c = ""
    j = ""
    f = ""
    If TextBox1 = "" Then
        MsgBox "Capturar usuario"
        TextBox1.SetFocus
        Exit Sub
    End If
    '
    If Not b Is Nothing Then
        ncell = b.Address
        Do
            'detalle
            If h.Cells(b.Row, "B") = TextBox1 Then
                f = b.Row
                For j = 3 To 6
                    If h.Cells(b.Row, j) = "" Then
                        c = j
                        Exit Do
                    End If
                Next
            End If
            Set b = r.FindNext(b)
        Loop While Not b Is Nothing And b.Address <> ncell
    End If
    Dim opcion As MSForms.Control
    Select Case c
        Case "", 3: Set opcion = OptionButton1
        Case 4: Set opcion = OptionButton2
        Case 5: Set opcion = OptionButton3
        Case 6: Set opcion = OptionButton4
    End Select
    '
    opcion.Visible = True
    opcion = True
    opcion.Left = 56
    opcion.Top = 72
    '
    CommandButton2.SetFocus
End Sub
Private Sub CommandButton2_Click()
'Por.Dante Amor
    If OptionButton1.Visible = False And OptionButton2.Visible = False And _
       OptionButton3.Visible = False And OptionButton4.Visible = False Then
        MsgBox "Debes verificar el usuario", vbCritical, "ERROR"
        TextBox1.SetFocus
        Exit Sub
    End If
    '
    If OptionButton1 = False And OptionButton2 = False And _
       OptionButton3 = False And OptionButton4 = False Then
        MsgBox "Debes seleccionar una opción", vbCritical, "ERROR"
        TextBox1.SetFocus
        Exit Sub
    End If
    '
    Set h = Sheets("Control")
    Set r = h.Columns("A")
    Set b = r.Find(Date, lookat:=xlWhole)
    '
    c = ""
    j = ""
    f = ""
    u = ""
    existe = False
    If Not b Is Nothing Then
        ncell = b.Address
        Do
            'detalle
            If h.Cells(b.Row, "B") = TextBox1 Then
                existe = True
                f = b.Row
                For j = 3 To 6
                    If h.Cells(b.Row, j) = "" Then
                        c = j
                        Exit Do
                    End If
                Next
            End If
            Set b = r.FindNext(b)
        Loop While Not b Is Nothing And b.Address <> ncell
        If existe = False Then
            c = 3
        End If
        '
        If c = "" Then
            MsgBox "No puedes registrarte 2 veces", vbCritical, "ERROR"
        Else
            If f <> "" Then
                h.Cells(f, c) = Time
                MsgBox "Registrado a la hora: " & Time
            Else
                u = h.Range("A" & Rows.Count).End(xlUp).Row + 1
            End If
        End If
    Else
        u = h.Range("A" & Rows.Count).End(xlUp).Row + 1
    End If
    If u <> "" Then
        h.Cells(u, "A") = Date
        h.Cells(u, "B") = TextBox1
        h.Cells(u, "C") = Time
        MsgBox "Registrado a la hora: " & Time
    End If
    TextBox1 = ""
    TextBox1.SetFocus
    OcultarOpciones
End Sub
'
Private Sub UserForm_Activate()
'Por.Dante Amor
    OcultarOpciones
End Sub
'
Sub OcultarOpciones()
'Por.Dante Amor
    OptionButton1 = False
    OptionButton2 = False
    OptionButton3 = False
    OptionButton4 = False
    OptionButton1.Visible = False
    OptionButton2.Visible = False
    OptionButton3.Visible = False
    OptionButton4.Visible = False
End Sub

':)
'S aludos. D a n t e   A m o r . R ecuerda valorar la respuesta. G racias
':)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas