Foros del Web » Soporte técnico » Ofimática »

TextBox SOLO parta números y ciertas letras

Estas en el tema de TextBox SOLO parta números y ciertas letras en el foro de Ofimática en Foros del Web. Tengo este código que he ido bajando y acomodando en uno solo para que me funcione en el evento KeyPress Código: Private Sub txt_RIF_CI_KeyPress(ByVal KeyAscii ...
  #1 (permalink)  
Antiguo 06/12/2014, 17:28
 
Fecha de Ingreso: agosto-2007
Mensajes: 1.945
Antigüedad: 16 años, 8 meses
Puntos: 39
TextBox SOLO parta números y ciertas letras

Tengo este código que he ido bajando y acomodando en uno solo para que me funcione en el evento KeyPress

Código:
Private Sub txt_RIF_CI_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = Asc(UCase(Chr(KeyAscii))) 'para MAYUSCULAS aun tengas tecla Bloq para minusculas

Const Number$ = "0123456789VEJ" ' solamente permite estos caracteres

If KeyAscii <> 8 Then
If InStr(Number$, Chr(KeyAscii)) = 0 Then
KeyAscii = 0

Exit Sub
End If
MsgBox "CARACTER NO PERMITIDO"
End If
'Si no es ninguna de las 3 letras indicadas manda un mensaje o retorna 0
       MsgBox "Solo permitido números Y teclas V E J", vbInformation, Title:="CARACTER NULO"

'Para Guion
Select Case Len(txt_RIF_CI)
Case 4, 12
txt_RIF_CI.Text = txt_RIF_CI.Text & "-"
End Select
If Len(txt_RIF_CI) = 14 Then KeyAscii = 0: MsgBox "LLego al MAX de 14 caracteres": Exit Sub

End Sub
Como se puede ver, pretendo que solo deje ingresar números y las letras SOLO al inicio, E V y J , es decir, de entremedio, entre el 1 y el ultimo 9, nada de letras o otro carácter a no ser números, (repito, el guion auto entra solo con el Select Case Len(txt_RIF_CI))

Cita:
J-12345678-9
Las 3 letras solo permitirlas al inicio y no puede permitir letras desde el 1 hasta el 9
El guion entra automáticamente, lleno el TextBox así, j este j se transforma en MAYUSCULA, aun tenga la tecla Bloq Mayus DESactivada o pise Shift, el guión luego de entrada la letra, auto se coloca, sigo, 12345678 auto entra el guion, sigo con el 9 para completar y verse el TextBox
Cita:
J-12345678-9
S iel carácter no es el indicado en el código, manda advertencia y lo borra
Cita:
MsgBox "CARACTER NO PERMITIDO"
Al llegar a 14 en total, manda el mensaje de advertencia,
Cita:
Llegó al MAX de 14 caracteres
Los mensajes también están fuera de posición

Me he matado en hacer cambios y cambios y nada de nada me da, pues la falta de experiencia, hace que recurra a ustedes, al cual solo me queda agradecerles.

Estoy en busca de un código CORTO y no tan complicado pero, que satisfaga lo que pretendo.
Lo del guion se que funciona pero como esta, algo pasa que no me da, probándolo solo si funciona.

¿Alguna idea?
Gracias
__________________
Las contraseñas son como la ropa interior: Nunca dejarlas donde la gente pueda verlas
http://i64.tinypic.com/rho40i.jpg
  #2 (permalink)  
Antiguo 07/12/2014, 09:51
 
Fecha de Ingreso: agosto-2007
Mensajes: 1.945
Antigüedad: 16 años, 8 meses
Puntos: 39
Respuesta: TextBox SOLO parta números y ciertas letras

Haciendo peripecies (trapesio, cuerda floja o bicicleta en el alambre como quieran pensarlo) con partes de codigos forme esto pero no logro tampoco que me funcione, el objetivo es el mismo, dependiendo del cual seria mas facil adaptarlo.

De un codigo quite este que SOLO pretendo que reconozca SOLO las 3 letras E, V, y J NINGUNA OTRA
Código:
    Select Case KeyAscii
        Case 69, 74, 86 'E,J,V
        Case Else
'Si no es ninguna de LAS 3 letras indicadas manda un mensage o retorna 0
       MsgBox "Solo permitido al inicio, tecla V E J", vbInformation, Title:="CARACTER NULO"
            KeyAscii = 0
    End Select
luego de otro esto, para que ACEPTE SOLO números
Código:
If Not (KeyAscii >= 48 And KeyAscii <= 57) Then
KeyAscii = 0 '<-- Esta linea es para borrar la tecla presionada equivocadamente
'Si no es ninguna de letras indicadas manda un mensage o retorna 0
       MsgBox "Solo permitido números", vbInformation, Title:="CARACTER NULO"
End If
y por ultimo este para que me auto ingrese el guion de echo lo hace probado solo
Código:
Select Case Len(txt_RIF_CI)
Case 1, 10
txt_RIF_CI = txt_RIF_CI & "-"
End Select
Uni todo el codigo, las 3 partes en el evento
Código:
 Private Sub txt_RIF_CI_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = Asc(StrConv(Chr$(KeyAscii), vbUpperCase))

SOLO para que llegue a 12 caracteres
If Len(Me.TextBox3) = 12 Then KeyAscii = 0: MsgBox "LLego al MAX de 12 caracteres": Exit Sub
em el orden que estan pero nada logre.

TOTAL, quiero que me reconozca las 3 letras, SOLO al inicio del TextBox, NI ESTAS 3 NI NINGUN OTRA PERMITA DE ENTREMEDIO despues del 1ª guion y hasta el 9, el o los guiones auto entran y luego que solo me reconozca números
Ej. En la caja (TextBox) quedaria así E-12345678-9

Como mensione arriba, quiero que solo valide las 3 letras, que no permita las mismas o otra letra de entremedio y que solo permita las 3 AL INICIO.

Gracias de antemano por vuestra ayuda
__________________
Las contraseñas son como la ropa interior: Nunca dejarlas donde la gente pueda verlas
http://i64.tinypic.com/rho40i.jpg

Última edición por JoaoM; 07/12/2014 a las 10:07
  #3 (permalink)  
Antiguo 11/12/2014, 09:28
Avatar de Monimo  
Fecha de Ingreso: noviembre-2007
Ubicación: Mexico Df
Mensajes: 742
Antigüedad: 16 años, 5 meses
Puntos: 69
Respuesta: TextBox SOLO parta números y ciertas letras

Hola. Háblame un poco de que tan flexible es la interfaz. Porque tal vez te convendría poner 3 textboxes en lugar de 1. un textbox. Como los campos para activar software dodne tienes que meter la clave. Te ponen tres textboxes separados por guiones. Así sería mas fácil validar cada uno y al final solo juntar la cadena tú concatenando los tres boxes.
__________________
La verdad es que lo que no quisiera dejar de hacer nunca (a parte de comer) es programar
  #4 (permalink)  
Antiguo 11/12/2014, 17:08
 
Fecha de Ingreso: agosto-2007
Mensajes: 1.945
Antigüedad: 16 años, 8 meses
Puntos: 39
Respuesta: TextBox SOLO parta números y ciertas letras

Tuve algo parecido a lo que me expones pero la macro era extensivamente larga.
Si no se puede dentro de esta misma, me quedo así para no alargarla.
El caso es (repito) el peso que va a tomar el libro cuando tenga miles y miles de líneas con datos.

Ademas despues de que el libro tenga +- 500000 lineas ocupadas, la idea es dar inicio a nuevo libro, (igual claro está)

Tengo una macro que estoy tratando de construir con la ayuda de un amigo, a ver que tal me va, si resulta la colocare aqui y el nombre de la persona que me acesoro y ayudo para lograr mi cometido

Por: bigpetroman
Código:
Private Sub txt_RIF_CI_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

    If Len(txt_RIF_CI) = 0 Then
        If InStr(1, "69,74,86,101,106,118", KeyAscii) = 0 Then
            MsgBox "Ingrese SOLO las letras E, V o J", vbOKOnly + vbInformation, Title:="CARACTER NULO"
            KeyAscii = 0
        End If
        Exit Sub
    End If
   
    ' solo números
    If Not (KeyAscii >= 48 And KeyAscii <= 57) Then
        KeyAscii = 0 '<-- Esta linea es para borrar la tecla presionada equivocadamente
        MsgBox "Ingrese SOLO numeros, en el campo", vbOKOnly + vbInformation, Title:="CARACTER NULO"
    End If

    If Len(txt_RIF_CI) = 12 Then KeyAscii = 0: MsgBox "LLego al maximo de 12 caracteres": Exit Sub
End Sub

Private Sub txt_RIF_CI_Change()
    If Len(txt_RIF_CI) = 1 Or Len(txt_RIF_CI) = 10 Then
    'Para Mayusculas
        txt_RIF_CI.Text = UCase(txt_RIF_CI.Text & "-")
    End If
End Sub
__________________
Las contraseñas son como la ropa interior: Nunca dejarlas donde la gente pueda verlas
http://i64.tinypic.com/rho40i.jpg

Última edición por JoaoM; 11/12/2014 a las 17:38
  #5 (permalink)  
Antiguo 04/01/2015, 17:10
 
Fecha de Ingreso: agosto-2007
Mensajes: 1.945
Antigüedad: 16 años, 8 meses
Puntos: 39
Respuesta: TextBox SOLO parta números y ciertas letras

Se puede cerrar el tema.

Resuelto con el ultimo codigo
__________________
Las contraseñas son como la ropa interior: Nunca dejarlas donde la gente pueda verlas
http://i64.tinypic.com/rho40i.jpg

Etiquetas: macros
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:02.