Formulario para entrada y salida de personal
Estoy creando un Formulario que permita buscar los datos de unos usuarios y registrar la fecha y hora de entrada (Mediante un botón) y la hora de Salida (Con otro Botón). El problema ahora es que el código al encontrar dos o más registros de entrada de una persona, les pone la misma hora de Salida. Mi pregunta es: ¿Es posible que el código identifique o compare la Fecha y Hora de entrada y así mismo ponga la salida?
Ejemplo: En este momento está así, si alguien entra el 01/07/2019 a las 8:00 am y sale a las 12:00 pm el Código pone esa hora de salida. Si esa persona entra nuevamente a las 2:00 pm y Sale a las 6:00pm, El código modifica las dos entradas y le pone 6:00 pm.
Para mi es muy complicado esta opción que me piden. Si se puede agradezco la ayuda. Adjunto el codigo que tengo.
'Evento Exit para buscar el Dato Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) 'si la celda se limpia o queda vacía el proceso continúa If TextBox1 = "" Then Exit Sub 'Si el Campo esta vacio termina la accion Dim Nombre As String Dim Rango As Range Set Rango = Sheets(1).Range("A1:AZ4000") 'Se define la BD On Error GoTo Error: 'Si no se encuentra el dato en la BD Indice = Application.WorksheetFunction.Match(Val(TextBox1.Text), Rango.Columns(1), 0) 'Busca el Dato Me.Label1.Caption = Rango.Cells(Indice, 2) 'Encuentra y muestra el Nombre Me.Label2.Caption = Rango.Cells(Indice, 13) 'Encuentra y muestra el Programa Me.Label3.Caption = Rango.Cells(Indice, 28) 'Encuentra y muestra el Tipo de Documento Me.Label4.Caption = Rango.Cells(Indice, 29) 'Encuentra y muestra el Documento Exit Sub 'Se detiene si hay error Error: MsgBox "Vuelva a Escanear el Carnet.", , "SIN COINCIDENCIAS" Cancel = True TextBox1 = Empty TextBox1.SetFocus End Sub 'Evento para guardar las entradas Private Sub CommandButton1_Click() 'Boton Entrada Dim hora As String Dim fecha As String hora = Format(Time, "hh:mm:ss") fecha = Format(Date, "dd/mm/yyyy") Sheets(2).Activate ActiveSheet.Cells(2, 1).Select If Trim(TextBox1.Text) = "" Then 'Verifica que el Campo no este vacio MsgBox "Vuelva a Escanear el Carnet.", , "SIN COINCIDENCIAS" TextBox1.SetFocus Else Selection.EntireRow.Insert 'Inserta una fila en la tabla 'Agrega los datos que se encontraron ActiveSheet.Cells(2, 1) = fecha ActiveSheet.Cells(2, 2) = UserForm1.Label1.Caption ActiveSheet.Cells(2, 3) = UserForm1.Label2.Caption ActiveSheet.Cells(2, 4) = UserForm1.Label3.Caption ActiveSheet.Cells(2, 5) = UserForm1.Label4.Caption ActiveSheet.Cells(2, 7) = ComboBox1.Value ActiveSheet.Cells(2, 8) = TextBox2.Value ActiveSheet.Cells(2, 9) = hora 'Acciones para Limpiar las Etiquetas End If End Sub 'Evento para guardar las Salidas Private Sub CommandButton2_Click() 'x Elsamatilde Dim hora As String hora = Format(Time, "hh:mm:ss") Dim busco Dim ini As Integer, filx As Integer 'se solicita el dato a buscar codi = TextBox1.Text 'si se cancela finaliza el evento. If IsEmpty(codi) Or codi = "" Then Exit Sub 'se busca el primer registro del código solicitado. a partir de allí se recorre un rango. Set busco = Range("E2:E" & Range("E1000").End(xlUp).Row).Find(codi, LookIn:=xlValues, lookat:=xlWhole) 'si encuentra el dato, comienza el bucle hasta el fin de rango If Not busco Is Nothing Then 'guardo la fila del 1er dato encontrado ini = busco.Row 'Inica el bucle: se agrega texto Do Range("J" & busco.Row).Value = hora Set busco = Range("E2:E" & Range("E1000").End(xlUp).Row).FindNext(busco) 'se repite el bucle hasta llegar al fin de rango o se vuelva a la 1er fila Loop While Not busco Is Nothing And busco.Row <> ini 'Acciones para Limpiar las Etiquetas Else MsgBox "Este Usuario No ha Ingresado", , "SIN COINCIDENCIAS" End If End Sub