Validar solo números, acepta la tecla borrar, tecla enter y no dejar en blanco la caja de texto en Visual Basic 6.0

Una consulta expertos:

Tengo dos cajas texto (TextBox1 y TextBox2 ) en un formulario de Visual Basic 6.0

Lo que quiero hacer es lo siguiente:

1. Validar la caja(TextBox1) solo para que acepte números.

2. Validar las caja (TextBox2) solo que admita letras incluyendo la letra Ñ y todo en mayúsculas, si se digita en minúscula que lo convierta a mayúsculas a medida que se va digitando.

Ahora bien:

Una vez validado las cajas de texto con esas condiciones, también deberían de aceptar la utilización de los siguientes teclados:

  • Tecla Borrar
  • Tecla ENTER y cambiar de foco a la siguiente caja de texto (TextBox2)
  • finalmente no debería de aceptar pasar a la siguiente caja (de la caja (TextBox1) a la caja (TextBox2)) si la primera se encuentra vacía.

Espero alguien de buen corazón y apasionado a este mundo de la programación me pueda ayudar con los códigos. Se que les tomará solo unos minutos..

1 respuesta

Respuesta
2

Vamos por partes. Es en Access, pero la instrucción Vb es la misma.

Para que el cuadro de texto Texto42 sólo acepte números

Private Sub Texto42_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode < 48 Or KeyCode > 57 Then
KeyCode = 0
End If
End Sub

Para que Texto44 sólo acepte letras

Private Sub Texto44_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode >= 48 And KeyCode <= 57 Then
KeyCode = 0
End If
End Sub

Para que lo que hayas escrito en Texto44 se convierta en mayúsculas

Private Sub Texto44_AfterUpdate()
Texto44 = UCase([Texto44])
End Sub

Para que si Texto42 no tiene nada, te "devuelva" el cursor a texto42

Private Sub Texto44_GotFocus()
If IsNull([Texto42]) Then
Texto42.SetFocus
End If
End Sub

En el caso de Enter y Supr( porque supongo que con  lo de borrar te refieres a esta tecla) como Enter equivale a 13 y Supr equivale a 46, en el caso de las letras no tienes que tocar nada porque están "dentro del margen". Si quisieras que también funcionen en el cuadro de texto de los números( algo que no me ha quedado claro) tendrías que ponerlo como

Private Sub Texto42_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode < 48 And KeyCode > 57 And KeyCode <> 13 Or KeyCode <> 46 Then
KeyCode = 0
End If
End Sub

No sé si me he explicado, pero es así.

Julián Gonzáles ¡ Muchas Gracias!...

En Visual Basic 6.0, tengo que colocar los códigos en el evento KeyPress verdad?...

se me olvidaba..

lo que me refiero con la tecla borrar es el teclado retroceso y tecla suprimir....

también te comento que en la caja de texto44 me está permitiendo ingresar otras teclas como ()/*=?¿ lo cual no debería de aceptarme. tiene que ser solo letras desde a A hasta la Z y en mayusculas... 

por favor solo en esos puntos me podrías ayudar..

Ha sido error mío, había entendido que daba igual cualquier signo. Si sólo quieres única y exclusivamente letras ponlo como

Select Case KeyCode
Case Is < 65
KeyCode = 0
Case 90 > KeyCode < 97
KeyCode = 0
Case Is > 122
KeyCode = 0
End Select
Texto44 = UCase([Texto44])

Y lo de Enter, supr y ... como ya quedan fuera del intervalo no tienes que decirle nada.

Con respecto a donde lo pones, puedes copiar el código tal como te lo puse, es el evento Al bajar una tecla.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas