¿Qué código uso o qué configuración cambio en un combobox para que el dato ingresado sea de un tamaño o forma determinada?

Tengo varios combobox y quiero que esos combobox solamente acepten una cantidad determinada de caracteres (ni más ni menos), o que esos caracteres sigan una mascara predefinida. Por ejemplo:

Mascara xxxxxx-xxxxxx-xxxxxx-xxxxxx-xxxxxx-xx

Que cuando se registren datos se siga esa mascara y la gente solo tenga que ingresar números o letras.

Entiendo que sería dos tipos de códigos.

Me ayudan

1 Respuesta

Respuesta
2

H  o l a:

Te anexo el código para el combobox1, si después de capturar, te regresas a cualquier parte del texto a modificar un caracter, automáticamente desde ese caracter y hacia la derecha se eliminan los caracteres, esto es para que la máscara se respete.

Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
'Por.Dante Amor
    ComboBox1 = Mid(ComboBox1, 1, ComboBox1.SelStart)
End Sub
'
Private Sub ComboBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'Por.Dante Amor
    'Para Guion
    '
    'xxxxxx-xxxxxx-xxxxxx-xxxxxx-xxxxxx-xx
    '01234567890123456789012345678901234567
    Select Case Len(ComboBox1)
        Case 6, 13, 20, 27, 34
            ComboBox1.Text = ComboBox1.Text & "-"
    End Select
    If Len(ComboBox1) = 37 Then KeyAscii = 0
End Sub

Supongo que la captura la vas a hacer en un textbox, porque en un combobox no capturas, la idea del combo es que puedas seleccionar un dato de la lista desplegable, así que también te anexo el ejemplo para un textbox

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
'Por.Dante Amor
    TextBox1 = Mid(TextBox1, 1, TextBox1.SelStart)
End Sub
'
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'Por.Dante Amor
    'Para Guion
    '
    'xxxxxx-xxxxxx-xxxxxx-xxxxxx-xxxxxx-xx
    '01234567890123456789012345678901234567
    Select Case Len(TextBox1)
        Case 6, 13, 20, 27, 34
            TextBox1.Text = TextBox1.Text & "-"
    End Select
    If Len(TextBox1) = 37 Then KeyAscii = 0
End Sub

R ecuerda valorar las respuestas.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Amigo, Dante. Gracias por tu ayuda!

El código funciona para la mascara a la perfección, pero siempre permite ingresar un dato menor de 37 caracteres.

Lo que también necesito es que no permita que se registre un dato con menos de 37 caracteres.

Gracias de nuevo.

Agrega lo siguiente al formulario para el combobox1

Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'Por.Dante Amor
    If Len(ComboBox1) < 37 Then Cancel = True
End Sub
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas