Antes de ayer estuve en una situación similar a la tuya, sólo que no me interesaban los rangos de horas.. sólo las fechas.
Te dejo como lo solucioné a ver si te sirve:
Código:
SQL = "SELECT * FROM Viat WHERE (((Viat.ID_Persona)=" & ID_Persona & ") AND ((Viat.PartidaFecha)<#" & PartidaFecha & "#) AND ((Viat.RegresoFecha)>#" & PartidaFecha & "#)) OR (((Viat.ID_Persona)=3) AND ((Viat.PartidaFecha)<#" & RegresoFecha & "#) AND ((Viat.RegresoFecha)>#" & RegresoFecha & "#))"
Si existe un registro que cumpla con esas condiciones, pués no se permite agregar el registro que se está intentando agregar.
Saludos