Casilla de validación con clave
En tu primer post decías que tenias una tabla USUARIOS con campos Nombre y Clave, pero el DLookUp lo haces con una tabla llamada USUARIO con campos Contraseña y Usuarios??
Estas pidiendo con el InputBox el valor del usuario y la contraseña, que tendrías que usar luego con el DLookUp para ver si están en la tabla de USUARIOS, y si coinciden para permitir la validación, peor luego no los usas para nada y en cambio haces referencia a USUARIO.value y contraseña.value, que no se si están en el formulario para poder usarlos.
En cuanto al DLookUp, si utilizas como criterio where "[Usuarios]=" & USUARIO.Value lo que estas indicando es que USUARIO.Value es un dato de tipo número, con lo que tendrás un problema al comparar con el valor que pides en el InputBox y que almacenas en sUser, que has definido como texto (string)
Mi recomendación:
- crea un cuadro de texto y un botón y vete comprobando que resultados tienes con los DLookUp antes de montar todo el bucle IF
- Modifica el DLookUp para que haga la comparación con el criterio where como tipo texto:
DLookup("[Contraseña]", "[tblUsuarios]", "[NombreUsuario]= '" & sUser & "'") 'Adapta a tu caso los nombres de la tabla, campos,..
- En tu composición de los bucles IF no has cerrado uno de ellos, seguramente uno de los errores viene de ahí, y has colocado el Me.Undo fuera, por lo que se ejecutara de todas formas.
- En tu comparación IF creo que podrías poner :
If Isnull( DlookUp con el sUser para ver si esta en la tabla) or sPass <> DlookUp (Contraseña con sUser en el criterio) then
me.undo
msgbox "Usuario o contraseña erroneos"
end if
Lo que compruebas es que si no no encuentras con el DLookUp el sUser en la tabla de usuarios o si el sPass no coincide con el valor del campo contraseña en la tabla de usuarios para el sUser, no permites el clic y mandas un mensaje de aviso, si no hay problema en las comprobaciones, no pasa nada y se permite el clic en el campo. Dejo en tus manos montar los DLookUp en el IF.