Validaciones

Necesito validar algunos text en visual basic 6.
Uno es para permitir solo letras, y no caracteres inválidos o números, acentos, paréntesis etc...
Y el otro es lo contrario, es decir que acepte solo números, pero que no deje ingresar otro tipo de caracteres.

5 respuestas

Respuesta
1
Function SoloLetras(ByVal KeyAscii As Integer) As Integer
'permite que solo sean ingresadas letras, el ENTER y el RETROCESO
If InStr("abcdefghijklmnñopqrABCDEFGHIJKLMNÑOPQRSTUVWXYZáéíóúÁÉÍÓÚ/-", Chr(KeyAscii)) = 0 Then
SoloLetras = 0
Else
SoloLetras = KeyAscii
End If
' teclas especiales permitidas
If KeyAscii = 8 Then SoloLetras = KeyAscii ' borrado atras
If KeyAscii = 13 Then SoloLetras = KeyAscii 'Enter
End Function
Es que las validaciones de las letras, no quiero que solo "no acepte números" sino que solo letras...
Private Sub Text1_KeyPress(KeyAscii As Integer)
KeyAscii = SoloNumeros(KeyAscii)
End Sub
Function SoloNumeros(ByVal KeyAscii As Integer) As Integer
'permite que solo sean ingresados los numeros, el ENTER y el RETROCESO
If InStr("0123456789/-", Chr(KeyAscii)) = 0 Then
SoloNumeros = 0
Else
SoloNumeros = KeyAscii
End If
' teclas especiales permitidas
If KeyAscii = 8 Then SoloNumeros = KeyAscii ' borrado atras
If KeyAscii = 13 Then SoloNumeros = KeyAscii 'Enter
End Function
Aquí tienes para validar la entrada de números. No te pongo la de las letras porque sería análoga a esta, sólo tendrías que sustituir en el instr, los números por letras.
Respuesta
1
Antes que nada disculpa la tardanza, pues mira para el segundo caso lo que puedes hacer es usar la instrucción IsNumeric que te devuelve True sin la cadena pasada es solo numérica, False si hay al menos un carácter no numérico en ella.
If IsNumeric(Text1.Text)=False Then
MsgBox "No es una cadena numérica"
End IF
Y ya sería cuestión tuya determinar que hacer en caso de que no se cumpla la condición.
Con respecto al primero pues lo que podrías hacer es recorrer el contenido de tu control text a una variable, analizarla y cuando encuentres un carácter invalido lo mencionas, podría ser algo como lo que sigue.
Dim i As Integer
Dim cadena As String, caracter As String
cadena=Text1.Text
For i=1 To Len(cadena)
caracter=Mid$(cadena,i,1)
'Verificación
Next
En verificación analizas el carácter extraído y ahí hay varias maneras, puedes usar un select case para los rangos de los valores o mejor una serie de If convirtiendo el carácter a su valor ascii y viendo si cae dentro de los valores de texto, caso de que no cancelas el for con Exit For y muestras un mensaje de error, no se si halla una manera más fácil. http://rinconprog.metropoliglobal.com/CursosProg/Entornos/VisualBasic/LenguajeVB/index.php?cap=7
Respuesta
1
Utilizando este evento y mirando el código ascci puedes hacer eso
Mira el ejemplo
Private Sub txtip_KeyPress(KeyAscii As Integer)
If KeyAscii < Asc("0") Or KeyAscii > Asc("9") Then
If KeyAscii = 46 Or KeyAscii = 8 Then
Exit Sub
End If
KeyAscii = 0 ' Cancela el carácter.
End If
End Sub
Respuesta
1
En la caja de texto en el evento keypres digita esto:
KeyAscii = CALL SonLetras(KeyAscii)
Y esta funcion es para solo permite capturar letras
Public Function SonLetras(Codigo As Integer) As Integer
'* OBJETIVOS : Solo permite seguir el ASCII de letras dentro de la caja de texto
'* RECIBE: Codigo: Caracter Ascii leído por teclado
'* RETORNA: # Ascii del Caracter si es una Letra
'* 0 Si el caracter no es una Letra o invalido
If Codigo < 1 Then
SonLetras = 0
End If
If (Codigo >= 65 And Codigo <= 90) Or Codigo = 8 Or Codigo = 32 Then
SonLetras = Codigo
Else
SonLetras = 0
End If
End Function
ESTA ES PARA LOS NUMEROS EN LA CAJA DE TEXTO EN EL EVENTO KEYPRESS METE ESTO
KeyAscii = CALL FValidaNumeros(KeyAscii)
Function FValidaNumeros(ParAscii As Integer) As Integer
'* OBJETIVOS : Lectura única de números para evento keypress
'* RECIBE: ParAscii Caracter Ascii leído por teclado
'* RETORNA: # Ascii del Caracter si es un número
'* 0 Si el caracter no es número
On Error GoTo Error
If IsNumeric(Chr(ParAscii)) = True Or ParAscii = 8 Or ParAscii = 13 Or ParAscii = 45 Then
FValidaNumeros = ParAscii
Else
FValidaNumeros = 0
End If
Exit Function
Error:
MsgBox Err.Description, vbInformation, "VISUALNET"
End Function
Espero que sea útil cualquier cosa no dude en comentármelo
Respuesta
1
En visual basic existe una función llamada isnumeric(string), esta te permite validar si el string ingresado es numérico o es carácter.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas