Visual Basic - MSGBOX al presionar una tecla que no sea un numero

Life is soft - evento anual de software empresarial
   
Vista:

MSGBOX al presionar una tecla que no sea un numero

Publicado por Emmerson (2 intervenciones) el 11/06/2008 08:05:56
Hola tengo el siguiente codigo

Private Sub Text1_Change()
Me.Text1 = UCase(Me.Text1)
Text1.SelStart = Len(Me.Text1.Text)
If (Len(Me.Text1) >= 21) Then
Me.Text1.Text = Mid(Me.Text1, 1, 21)
Me.Text1.Text = Mid(Me.Text1, 1, 20)
MsgBox "hola"
End If
End Sub

Este codigo hace que en mi txt1 solo pueda escribir 20 caracteres y al presionar el caracter numero 21 me aparezca un msgbox y luego se borre el ultimo caracter tecleado. Luego viene este otro codigo

Private Sub Text1_KeyPress(KeyAscii As Integer)
Dim rpta As String
Select Case KeyAscii
Case 8, 45, 48 To 57
Case Else: KeyAscii = 0
End Select
If Text1.SelStart <> 0 And KeyAscii = 45 Then KeyAscii = 0
End Sub

Esto hace que dentro del txt1 solo pueda escribir numeros. Ahora lo que yo quier hacer es que al presionar cualquier tecla que no sea un numero inmediantamente me aparezca un MSGBOX y que no me permita salir del txt1 sin haber rellano ese txt1.Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:MSGBOX al presionar una tecla que no sea un num

Publicado por J@vier (44 intervenciones) el 11/06/2008 13:47:13
existe la propiedad MaxLength donde le indicas el maximo permitido

Text1.MaxLength = 20
--------------------------------
Private Sub Text1_Change()
If Len(Text1) = Text1.MaxLength Then MsgBox "Llegaste al limite"
Me.Caption = Len(Text1)
End Sub
---------------------------------
lo de el mensaje cuando no sea numerico.

Private Sub Text1_KeyPress(KeyAscii As Integer)
KeyPreview = False
Dim strValido As String

strValido = "0123456789"
If KeyAscii > 26 Then
If InStr(strValido, Chr(KeyAscii)) = 0 Then
KeyAscii = 0
MsgBox "Solo Numeros"
End If
End If

End Sub

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:MSGBOX al presionar una tecla que no sea un num

Publicado por Juan Urrutia (16 intervenciones) el 11/06/2008 22:57:57
hola Amigo..

mira....bueno no se como veas esto

creo que no es conveniente estar mandando al user un mensaje cada que meta un NO Numero

es mejor no dejarselo meter

con este codigo

Private Sub Text1_KeyPress(KeyAscii As MSForms.ReturnInteger)
KeyAscii = IIf(IsNumeric(Chr(KeyAscii)) Or KeyAscii = vbKeyReturn, KeyAscii, 0)
End Sub

si es numero o backspace, deja pasar la tecla pulsada, sino, es como si no se hubiese presionado.....espero te sirva...

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar