Public Class clsString Public Sub fsValidKeyPress(ByVal KeyAscii As Integer, ByVal sTipo As String, ByVal pbActiveCtrl As Object) 'Validar caracteres de captura. 'Sintaxis : fsValidKeyPress(KeyAscii, sTipo, bActiveCtrl) 'KeyAscii - Valor Ascii del evento KeyPress del control. 'sTipo - Tipo de campo que se valida. 'bActiveCtrl - Determina la validación sobre el control activo en pantalla, ' es True por omisión. 'Nota: El tipo de dato que se debe dar, se describe a continuación: ' A = Alfabetico (Solo Alfabetos). ' AN = Alfanumérico (Números y Alfabetos). ' N = Númerico con Punto flotante y signo negativo. ' I = Númerico enteros. ' D = Fecha. ' F = Fecha. ' C = Caracter (Todos los caracteres permisibles ecepto el salto de linea). ' S = String (Todos los caracteres permisibles incluyendo el salto de linea). ' M = Memo (Todos los caracteres permisibles incluyendo el salto de linea). ' H = Horas. ' T = Telefonico (Númerico con guiones, espacios y parentesis) ' V = Varchar (Todos los caracteres permisibles incluyendo el salto de linea). ' R = Campo de Solo Lectura (Read [Only]). ' E = E-MAIL (Todos los caracteres permisibles ecepto el salto de linea). '******************************************* ' Fecha de Creación: 01-Jun-1997 ' Autor .NET: Juan Garcia Nava. '******************************************* If KeyAscii < 32 And KeyAscii <> 8 And KeyAscii <> 13 Then Exit Sub 'Caracteres No Validos. Select Case KeyAscii Case 34 '=[Doble comilla] KeyAscii = 0 ' Case 39 '=[Apostrofe] KeyAscii = 0 ' Case 94 '=[Barra] KeyAscii = 0 ' Case 96 '=[Apostrofe invertido] KeyAscii = 0 ' Case 123 To 190 '=[Especiales] KeyAscii = 0 ' Case 192 '=À KeyAscii = 0 ' Case 194 To 200 '=[Especiales] KeyAscii = 0 ' Case 202 To 204 '=[Especiales] KeyAscii = 0 ' Case 206 To 208 '=[Especiales] KeyAscii = 0 ' Case 210 '=Ò KeyAscii = 0 ' Case 212 To 217 '=[Especiales] KeyAscii = 0 ' Case 219 To 224 '=[Especiales] KeyAscii = 0 ' Case 226 To 232 '=[Especiales] KeyAscii = 0 ' Case 234 To 236 '=[Especiales] KeyAscii = 0 ' Case 238 To 240 '=[Especiales] KeyAscii = 0 ' Case 242 '=[Especiales] KeyAscii = 0 ' Case 244 To 249 '=[Especiales] KeyAscii = 0 ' Case Is > 250 '=[Especiales] KeyAscii = 0 ' Case Else 'Caracteres Validos según el tipo. sTipo = UCase(sTipo) Select Case sTipo Case "A" 'Alfabeto. ' If KeyAscii = 13 Then KeyAscii = 0 ' If KeyAscii = 13 Then SendKeys.Send("{tab}") If (KeyAscii < 65 Or KeyAscii > 90) And KeyAscii <> 63 Then If (KeyAscii <> 8 And KeyAscii < 97) Or KeyAscii > 122 Then KeyAscii = 0 ' End If Case "AN" 'AlfaNumérico. ' If KeyAscii = 13 Then KeyAscii = 0 ' If KeyAscii = 13 Then SendKeys.Send("{tab}") If ((KeyAscii <> 8 And KeyAscii < 48) Or (KeyAscii > 57 And KeyAscii < 65) Or (KeyAscii > 90 And KeyAscii < 97) Or KeyAscii > 122) And KeyAscii <> 63 Then KeyAscii = 0 ' Case "C" 'Caráctere. If KeyAscii = 13 Then SendKeys.Send("{tab}") ' Case "R" 'Solo Lectura. KeyAscii = 0 ' Case "I" 'Entero ' If KeyAscii = 13 Then Exit Sub If KeyAscii = 13 Then SendKeys.Send("{tab}") If KeyAscii = 8 Then Exit Sub ' 0123456789 If Not (KeyAscii < 58 And KeyAscii > 47) Then KeyAscii = 0 Case "N" 'Númerico con punto flotante. ' If KeyAscii = 13 Then Exit Sub If KeyAscii = 13 Then SendKeys.Send("{tab}") If KeyAscii = 8 Then Exit Sub ' .0123456789- If Not (KeyAscii < 58 And KeyAscii > 44 And KeyAscii <> 47) Then KeyAscii = 0 If InStr(pbActiveCtrl, ".") And KeyAscii = 46 Then KeyAscii = 0 If KeyAscii = 45 Then If InStr(pbActiveCtrl, "-") = 0 Then If Len(pbActiveCtrl) > 0 Then pbActiveCtrl = "-" & pbActiveCtrl KeyAscii = 0 End If Else KeyAscii = 0 End If End If If InStr(pbActiveCtrl, ".") And KeyAscii = 46 Then KeyAscii = 0 If KeyAscii = 45 Then If InStr(pbActiveCtrl, "-") = 0 Then If Len(pbActiveCtrl) > 0 Then pbActiveCtrl = "-" & pbActiveCtrl KeyAscii = 0 End If Else KeyAscii = 0 End If End If Case Else ' If KeyAscii = 13 Then SendKeys "{Tab}" End Select End Select End Sub End Class