validar numero

07/04/2006 - 09:08 por RBA | Informe spam
Que tal amigos, necesito validar una TextBox, que solo acepte numeros entre:

5 y <10, pero no logro arreglar el numero 10, lo hago con


TextBox_Change:

Private Sub TBF11_Change()
On Error Resume Next
If Not IsNumeric(TBF11.Text) Then
If Len(TBF11.Text) = 1 Then
TBF11.Text = ""
Exit Sub
Else
TBF11.Text = Left(TBF11.Text, Len(TBF11.Text) - 1)
End If
Else
If TBF11.Value = 1 Then
TBF11.Value = 10
Else
If TBF11.Value < 5 Or TBF11.Value > 10 Then TBF11.Text =
Left(TBF11.Text, Len(TBF11.Text) - 1)
End If
End If
End Sub

De esta forma consigo que el usuario no escriba letras ni numeros fuera de
rangos pero el 10 no consigo arreglarlo, el problema es que cuando quiero
eliminarlo con BackSpace me deja el mismo 10 por la estructura de funcion
que valida cada entrada, solo logro eliminarlo seleccionando el texto
completo, lo cual no es muy recomendable pues se trata de varios campos,
alguna sugerencia gracias
 

Leer las respuestas

#1 Héctor Miguel
07/04/2006 - 10:37 | Informe spam
hola, RBA !

... necesito validar una TextBox, que solo acepte numeros entre:5 y 10... lo hago con TextBox_Change:
Private Sub TBF11_Change()
On Error Resume Next
If Not IsNumeric(TBF11.Text) Then
If Len(TBF11.Text) = 1 Then
TBF11.Text = ""
Exit Sub
Else
TBF11.Text = Left(TBF11.Text, Len(TBF11.Text) - 1)
End If
Else
If TBF11.Value = 1 Then
TBF11.Value = 10
Else
If TBF11.Value < 5 Or TBF11.Value > 10 Then TBF11.Text = Left(TBF11.Text, Len(TBF11.Text) - 1)
End If
End If
End Sub
... consigo que el usuario no escriba letras ni numeros fuera de rangos pero el 10 no consigo arreglarlo [...]



[creo que] la siguiente propuesta +/- 'cubre' [algunas] otras eventualidades :)
aunque echo mano de otros eventos como sigue:
1) el evento '_keypress' SOLO permite al usuario ingresar los numeros 0, 1 y de 5 a 9
2) el evento '_change' EVITA el numero superior a 10
3) el evento '_exit' EVITA que el numero se pudiera 'quedar' en 1

como se va a tratar de 'varios' textboxes... [probablemente] sera mejr adaptar un modulo de clase [o algo parecido] :))

si cualquier duda [o informacin adicional]... comentas ?
saludos,
hector.

en el modulo de codigo del formulario ==Private Sub TBF11_Change()
If TBF11 = "" Then Exit Sub
Select Case Val(TBF11)
Case 1, 5 To 10
Case Else
MsgBox "SOLO debes introducir valores entre 5 y 10 !!!"
SendKeys "{bs}"
End Select
End Sub
Private Sub TBF11_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case 48, 49, 53 To 57
Case Else: KeyAscii = 0
End Select
End Sub
Private Sub TBF11_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TBF11 = "" Then Exit Sub
If Val(TBF11) = 1 Then Cancel = True: _
MsgBox "SOLO debes introducir valores entre 5 y 10 !!!"
End Sub

Preguntas similares