TextBox para solo números y introducción de 3 caracteres

En un TextBox para solo números y que me acepte solamente 3 caracteres, el
código siguiente es lo que tengo

Private Sub txtcli3_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Not (KeyAscii >= 48 And KeyAscii <= 57) Then
KeyAscii = 0  '<--- El KeyAscii = 0 es para borrar la tecla presionada equivocadamente
MsgBox "Ingrese SOLO números, en el campo, el guion entra automático", vbOKOnly + vbInformation, Title:="CARÁCTER NULO"
End If
If Len(Me.txtcli3) = 12 Then KeyAscii = 0
If Len(Me.txtcli3) = 12 Then MsgBox "LLego al máximo posible de caracteres": Exit Sub
'Guion
Select Case Len(txtcli3)
Case 2, 11
txtcli3.Text = txtcli3.Text & "-"
End Select
End Sub

Quiero agregarle estas lineas para que me permita insertar estos caracteres V, E y J

vl = VBA.Left(VBA.UCase(TextBox2), 1)
'SOLO Letras que estan en el codigo. V, E y J
If VBA.Len(TextBox2) = 1 And VBA.UCase(vl) <> "V" And VBA.UCase(vl) <> "E" And _
VBA.UCase(vl) <> "J" Then MsgBox "No permitido": TextBox2 = ""

inserto letra, auto-guion, sigo con 8 números y luego otro guion y termina con otro numero. Total de 12 caracteres en conjunto.

Lo hice de esta foma:

Private Sub txtcli3_Change()
vl = VBA.Left(VBA.UCase(txtcli3), 1)
'SOLO Letras que estan en el codigo. V, E y J
If VBA.Len(txtcli3) = 1 And VBA.UCase(vl) <> "V" And
VBA.UCase(vl) <> "E" And _
VBA.UCase(vl) <> "J" Then MsgBox "No permitido":
txtcli3 = ""
If Len(Me.txtcli3) = 12 Then KeyAscii = 0
If Len(Me.txtcli3) = 12 Then MsgBox "LLego al maximo posible de
caracteres": Exit Sub
'Guion
Select Case Len(txtcli3)
Case 4
Txtcli3.Text = txtcli3.Text & "-"
End Select
End Sub

Como dice en una parte de mi mensaje, SOLO 12 en total
El deseo es este E-12345678-9 (letra en mayúscula este o no el BloqMayus activado
para ello) pero no me dá el resultado ni mensajes que espero
Quiero que si introduzco una letra que no sea alguna E, V o J en el inicio, que me diga "Carácter No permitido" y no deje el carácter equivocado insertado pero, que no me vacíe el TextBox.
Si después del 1º guion, introduzco ALGUNA letra (que no sea número y el último guion) que me diga "no es número" y no deje el carácter erróneo insertado pero, que no me vacíe el TextBox.
Al final de 12 caracteres insertados en conjunto y totales, líneas

If Len(Me.txtcli3) = 12 Then KeyAscii = 0
If Len(Me.txtcli3) = 12 Then MsgBox "Llegó al máximo
posible de caracteres": Exit Sub

Si sigo introduciendo lo que sea, me mande el menaje descripto pero,
que no me vacíe el TextBox

1 respuesta

Respuesta
3

Como te lo he dicho antes:

“Para qué hacer las cosas fáciles si te las puedes complicar”

Por. DAM

Ya has comprobado que en los textbox de VBA no se puede validar las máscaras, se tiene que hacer mucho código para validar datos. He visto en alguna parte que puedes descargar herramientas para validar máscaras como esta: V-12345678-1

Pero, nuevamente no te compliques, crea 3 textbox, en uno solamente acepta las letras V, E y J y eso es muy sencillo.

En otro sólo acepta número y ese código ya lo tienes.

Y por último en el tercer textbox acepta números.

Al final concatenas los 3 textbox con guiones intermedios.

Para validar las letras

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    Select Case KeyAscii
        Case 69, 74, 86 'E,J,V
        Case Else
            MsgBox "Letra no permitida"
            KeyAscii = 0
    End Select
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas