El éxito de la búsqueda depende de que los datos, fecha y hora sean correctamente ingresados, como la fecha la ingresas con un dtpicker, no hay problema, pero la hora en un textbox, no es conveniente así que cambie el textbox por un combo y le agregué las horas disponibles desde las 00:00 horas hasta las 23:30 horas, con un intervalo de media hora; también agregué otros controles a la captura de la hora para que sea una hora válida.
Si la fecha y la hora ya existen te envía un mensaje y no te deja registrar los datos.
Te anexo el código del formulario
Private Sub Registrar_Click()
'Por.Dante Amor
If C3 = "" Or C4 = "" Or C5 = "" Or C6 = "" Or C7 = "" Or C8 = "" Or C9 = "" Then
MsgBox "Faltan datos", vbExclamation
Else
Set h1 = Sheets("Archivo")
Set b = h1.Columns("H").Find(C7.Value, lookat:=xlWhole, LookIn:=xlFormulas)
If Not b Is Nothing Then
celda = b.Address
hora = TimeValue(C8)
Do
If h1.Cells(b.Row, "I") = hora Then
existe = True
Exit Do
End If
Set b = h1.Columns("H").FindNext(b)
Loop While Not b Is Nothing And b.Address <> celda
If existe Then
MsgBox "Ya existe un evento en esa fecha y a esa hora", vbExclamation, "REGISTRAR EVENTOS"
Else
u = h1.Range("B" & Rows.Count).End(xlUp).Row + 1
h1.Cells(u, "B") = C1
h1.Cells(u, "C") = C2
h1.Cells(u, "D") = C3
h1.Cells(u, "E") = C4
h1.Cells(u, "F") = C5
h1.Cells(u, "G") = C6
h1.Cells(u, "H") = C7
h1.Cells(u, "I") = C8
h1.Cells(u, "J") = C9
h1.Cells(u, "K") = C10
h1.Cells(u, "L") = C11
MsgBox "Evento registrado", vbInformation, "REGISTRAR EVENTOS"
End If
End If
End If
End Sub
'
Private Sub C8_DropButtonClick()
'Por.Dante Amor
C8 = Replace(C8, ",", ".")
C8 = Format(Val(C8), "hh:mm")
End Sub
'
Private Sub C8_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = 0
End Sub
'
Private Sub UserForm_Activate()
C5.RowSource = "Datos!A2:A120"
C8.RowSource = "Datos!E2:E49"
C9.RowSource = "Datos!C2:C120"
End Sub
'
Private Sub Cancelar_Click()
Unload Me
End Sub
Saludos.Dante Amor