Cambiar de campo automáticamente al llegar a la longitud máxima del campo anterior

Quizá es muy simple pero llevo tiempo buscando la forma y no la encuentro... Lo que quiero hacer es que cuando llegue a teclear el último carácter o número en un campo de un formulario, sin teclear la tecla Enter o Tab, me cambie al campo siguiente según el orden preestablecido. Por ejemplo: en un campo Fecha, cuando acabe de introducir la fecha completa ya me cambie al siguiente campo sin necesidad de pulsar Enter o Tab.

He buscado si existía algún procedimiento o código VBA pero no he encontrado nada que me sirva.

Espero haberme explicado correctamente y a ver si alguien me da alguna idea.

1 Respuesta

Respuesta
1

En el evento al presionar una tecla dentro para el campo en cuestión debes escribir esto.

Contar_Letras = Len(Campo1.Text)
If Contar_Letras = numero_de_caracteres_campo1 Then
KeyAscii = 0

Campo2.setfocus<br class="scayt-misspell" data-scayt_word="MsgBox" data-scaytid="77" />End If

Obviamente numero de caracteres será la cantidad de caracteres que quieres que se puedan escribir en el campo1.

Bueno eso es espero te sirva.

Hola:

Primero de todo muchas gracias por tu respuesta. Funciona perfectamente en un campo de tipo Texto. Pero lo he probado en un campo de fecha (que es donde realmente me interesa) pero tan pronto tecleo el primer número de la fecha se me salta el foco al campo que le indiqué en el código.

He probado de quitarle el .Text de la fórmula LEN entonces aparentemente no hace nada...

¿Alguna sugerencia?

El campo lo tienes con formato fecha y mascara de entrada, intenta quitando el formato fecha de la propiedad formato y si tien mascara de entrada pues quítala y prueba el código.

Otra sugerencia si la fecha a ingresar es la fecha actual puedes colocar =Fecha() en la propiedad Valor Predeterminado del campo. Esto hará rescatar la fecha del sistema y no tendrás que escribirla cada vez que hagas un nuevo registro.

Efectivamente tiene formato de fecha corta así como máscara. Se lo he quitado pero ahora me hace una cosa muy curiosa y es que me sale un error 2110 que no puede enfocar al campo que le indico una vez alcanzo el limite del campo... cuando antes de quitarle el formato sí lo hacía. Es un subformulario dentro de un formulario principal pero que después del evento Después de Actualizar tengo puesto el mismo campo y funciona. En cambio al pasar por este evento y después de quitar el formato y la máscara, sí que me detecta el "tope" del campo que le marco pero no me deja mover el enfoque al campo que le indico... me estoy volviendo loco... he probado de poner el campo destino como Me.CampoDestino y CampoDestino.Setfocus pero hace lo mismo...

A ver si investigo más porque es realmente curioso...

Haré el ejercicio. En un mdb y si resulta te lo envío. Debes indicarme tu correo.

Pues agradezco tu ayuda e interés porque estoy bloqueado y no encuentro la solución... la solución que has dado es perfecta pero siendo fecha no va (cambia el enfoque al primer dígito tecleado) y si le quito el formato y máscara entonces me da error que no puede mover el enfoque a ese campo...

Mi correo: [email protected]

Muchas gracias de nuevo

Jordi Quintero

Te he enviado el ejemplo de como lo puedes hacer. A tu correo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas