Validación en campo de texto de una tabla

Me podrían ayudar como poder colocar una regla de validación a un campo de texto en una tabla para poder colocar solo consonantes. Por ejemplo HCTR MNL HDLG.

2 Respuestas

Respuesta
2

Si los datos los metes a través de un formulario, y no te quieres calentar la cabeza, basta con que en el evento Al bajar una tecla del cuadro de texto que sea crees un procedimiento de evento y entre Private Sub... y End sub lo pongas como

Select Case KeyCode
Case 65, 69, 73, 79, 85, 97, 101, 105, 11, 117
KeyCode = 0
End Select

O sea, que cuando vayas a escribir en ese cuadro de texto y pulses una vocal, sea minúscula o mayúscula no te escribe nada. Si ya quieres tener en cuenta que sean acentuadas o no, con ir cogiendo los números del código ASCII e ir poniéndolos a continuación, listo.

¡Gracias! Funciona perfectamente

no, me había dado cuenta pero también permite algunos números y signos. Es posible que solo sean consonantes y que la primera letra sea mayúscula y las demás en minúscula y esto que lo realice después de cada espacio. ejemplo Hctr Hdlg Glr

Supongamos que tengo la tabla Copia como en la imagen

Con ella hago un formulario donde voy a "usar" el campoA. Escribo en él, sólo permite consonantes

Cuando pongo el cursor en el siguiente control

Prefiero alargar un poco el código pero es más didáctico. El código del evento al bajar una tecla del cuadro de texto CampoA es

Private Sub CampoA_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode <= 64 Then
KeyCode = 0
ElseIf KeyCode >= 91 And KeyCode <= 96 Then
KeyCode = 0
ElseIf KeyCode >= 123 Then
KeyCode = 0
ElseIf KeyCode = 65 Or KeyCode = 69 Or KeyCode = 73 Or KeyCode = 79 Or KeyCode = 85 Then
KeyCode = 0
ElseIf KeyCode = 97 Or KeyCode = 101 Or KeyCode = 105 Or KeyCode = 111 Or KeyCode = 117 Then
KeyCode = 0
End If
End Sub

Me explico, si la tecla que pulsas tiene un valor menor ó igual que 64 no hace nada

si está entre 91 y 96 lo mismo, etc.

El código del evento Después de actualizar del cuadro de texto campoa es

Private Sub CampoA_AfterUpdate()
CampoA = StrConv([CampoA], vbProperCase)
End Sub

Es decir, que ponga la primera letra en mayúsculas

Julián, el código mejoro bastante, pero igual puedo colocar números y no me funciona la tecla espaciadora, ni enter, y tampoco puedo borrar lo que e puesto. De seguro estoy haciendo algo mal pero no se que es

Lo de los números es imposible. Mira en la imagen, el código ASCII del 5, por ejemplo es

Es 53, que entra dentro de <=64

Por otro lado, si para borrar usas la tecla retroceso, que su valor es 8, tendrías que poner la instrucción como

Private Sub CampoA_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode <= 7 Then
KeyCode = 0
ElseIf KeyCode > 8 And KeyCode <= 64 Then
KeyCode = 0
ElseIf KeyCode >= 91 And KeyCode <= 96 Then
KeyCode = 0
ElseIf KeyCode >= 123 Then
KeyCode = 0
ElseIf KeyCode = 65 Or KeyCode = 69 Or KeyCode = 73 Or KeyCode = 79 Or KeyCode = 85 Then
KeyCode = 0
ElseIf KeyCode = 97 Or KeyCode = 101 Or KeyCode = 105 Or KeyCode = 111 Or KeyCode = 117 Then
KeyCode = 0
End If
End Sub

De todas formas, si quieres, repito, si quieres mándame un mensaje(sólo el mensaje) a [email protected] y te mando un ejemplo, que es como se ve mejor.

Si lo haces, en el asunto del mensaje pon tu alias Hector Manuel, ya que si no sé quien me escribe ni los abro.

Ya pude ver el ejemplo que me envío a mi correo, pero igual me deja colocar números y algunos símbolos. Trate de buscar unos códigos y agregarlos, como el código del espacio en blanco y desplazamiento para ambos lados, pero no se porque me siguen apreciando números y algunos signos. Igual agradezco la paciencia por ayudarme. Seguiré buscando algunos códigos Ascii para ver como puedo solucionarlo. Muchas gracias.

No sé como será tu ordenador, pero todos, absolutamente todos, los ordenadores del mundo trabajan en código ASCIII. Y no puede ser que le digas que si pulsa el 3 por ejemplo, su valor sea igual a 0 y que cuando lo pulses en el cuadro de texto te ponga ese número. ¿En el ejemplo que te envié te lo permite?

Siento no poder poner aquí un vídeo que demuestra que no lo hace, así que te lo mando al correo.

Respuesta
1

La respuesta que le de dan no sirve porque acepta también otros caracteres como números y símbolos, por ejemplo. PrtswTR97881 ¿'.-,.

Observe este formulario:

Le preparé 2 procedimientos, uno que solo acepta letras consonantes mayúsculas, este es el código. No acepta ningún otro carácter y va en el evento Al presionar una tecla.

Este otro solo acepta consonantes minúsculas o mayúsculas. No acepta ningún otro carácter y va en el evento Al presionar una tecla.

Para que los eventos respondan tiene que configurar el formulario en Propiedades, Eventos, Tecla de vista previa en SI, como muestra la figura.

Disculpe no adicioné el otro código :

Eduardo tiene razón, probare con el nuevo código y les aviso, muchas gracias por la ayuda

el codigo que envias es el mismo del principio

Coloque el primer codito que indica Eduardo y no hace ningún filtro, me deja ingresar cualquier letra y caracter y eso que también coloque en SI el evento (tecla de vista previa) en el formulario. Asi ahora probare el segundo código para ver como funciona.

Tiene que habilitar Tecla de vista previa, como muestra la imagen.

Veo que tiene al final del primer Select Case .....Case False y es Case Else

Para poner la primera letra en mayúscula utilice la función StrConv() como le explican en el evento Después de actualizar del control, pero no se complique con tanto ElseIf. Para este caso es más practico el evento Al presionar una tecla KeyPress que KeyDown, el cual tiene más uso en detectar combinación de teclas especiales, por ejemplo CTRL, ALT y teclas de navegación.

Ya corregí

el código y la Tecla de vista previa, ya la tenia en Si como me indicaba anteriormente, pero me deja poner vocales y no me deja avanzar con el espaciador

Veo que en el ultimo LIKE esta usando es parentesisis y es [....]

Si, eso era, pero no puedo separar las letras con el espaciador. Como lo puedo hacer. Escribo Hctrmnl y debería poder escribir Hctr Mnl

Si efectivamente faltaba vbKeySpace por esto no permite la barra espaciadora. Debe quedar así:

Este código va convirtiendo las consonantes a mayúsculas, no acepta las vocales, si quiere que deje la primera letra de cada grupo en mayúscula, ingrese este código en el evento Después de actualizar del campo texto, sería algo como:

Me.Texto0 = StrConv(Me.Texto0, vbProperCase)

En donde Texto0 es el nombre de su campo de texto.

Estuve probando el código que le dan y no funciona lo siguiente:

- Barra espaciadora

- Tecla Suprimir

- Teclas de desplazamiento (Flechas izquierda y derecha)

- Tecla Enter

Como quien dice tendría que llenarse de ElseIf, ya es de su elección cual ejemplo toma.

Ya agregue el código en el recuadro y funciona a la perfección. El otro código después de actualizar ya lo tenia agregado. Agradezco su paciencia y ayuda. Muchas gracias.

si tuviera que crear un texbox adicional que ingrese letras y números que tendría que agregarle al código que me envió? 

¿Pero todo el abecedario?. Mañana le enseño el ejemplo y es algo que utilizo bastante

Oka, muchas gracias

Este es el código para controlar el ingreso de letras (todo el abecedario) y números del 0 al 9.

Código del evento Al presionar una tecla:

Observe que es muy parecido al código que le suministré, solo adicioné una línea y retiré la excepción de las vocales, si las quiere excluir adicione el código al final como está en anterior ejemplo. Imagínese si utilizara KeyDown cuántas líneas y ElseIF tendríamos, pero hay otros que insisten en lo que no sirve. Le recomiendo que conserve este código tiene bastante utilidad, lo utilizo en todos mis formularios.

Se paso, muchas gracias

Tengo una duda, me toco escribir letras que contemplan la Ñ, pero no pude colocarla, me faltara algo que hacer para agregarla?

Escríbame a [email protected] y le envío el ejemplo, tengo problemas por TodoExpertos.

Esto es:

Este es el código:

Solo adicione lo que indica la flecha y listo.

Si quiere algo más completo y con acentos:

Este es el código:

Con esto queda demostrado que KEYDOWN no se debe utilizar en este caso y doy por terminada las respuestas a su consulta.

Muchas gracias una vez más, por la ayuda y paciencia. Los códigos funcionan a la perfección.

Me alegro le haya servido, conserve el código le servirá para hacer validaciones, en otra oportunidad le enseño el código para que acepte solo números con la coma (,) y el punto (.) Y más.

Muchas gracias por su amabilidad y dedicación

Solo le recomiendo antes de valorar una respuesta tómese el tiempo en probar la solución que le dan, si esta cumple con sus expectativas, mire el caso de esta pregunta tiene 2 votos positivos y esta valorada como excelente, la realidad es que está lejos de ser una solución a la pregunta. Algunos responden como si esto fuera una competencia y no prueban desde diferentes puntos de vista la respuesta que están ofreciendo, por lo regular siempre pruebo el código, aunque se dan casos que no es una solución y esto se debe a que haya entendido mal la pregunta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas