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

Añade tu respuesta

Haz clic para o