Validar correo, números y textos en Formularios VBA
La validación de datos en formularios VBA Excel es crucial para garantizar la precisión de la información ingresada por los usuarios. Permite restringir el tipo de datos que se pueden introducir en cada campo, evitando errores y asegurando la calidad de los datos recolectados.
Validar Texto: Solo permite ingresar Texto
La siguiente función valida textos dentro de nuestros formularios, eso quiere decir que el usuario solo va poder ingresar textos y no números.
Function ValidarTexto(Texto As Variant)
Dim Caracter As Variant
Dim Largo As String
Dim i As Integer
On Error Resume Next
Largo = Len(Texto)
For i = 1 To Largo
Caracter = CInt(Mid(Texto, i, 1))
If Caracter <> "" Then
If Not Application.WorksheetFunction.IsText(Caracter) Then
Texto = Replace(Texto, Caracter, "")
ValidarTexto = Texto
Else
End If
End If
Next i
ValidarTexto = Texto
On Error GoTo 0
End Function
Validar Número: Solo permitir Ingresar Números
La siguiente función valida números dentro de nuestros formularios, eso quiere decir que el usuario solo va poder ingresar números y no textos.
Function ValidarNumero(Texto As Variant)
Dim Caracter As Variant
Dim Largo As Integer
Dim i As Integer
On Error Resume Next
Largo = Len(Texto)
For i = 1 To Largo
Caracter = Mid(CStr(Texto), i, 1)
If Caracter <> "" Then
If Caracter < Chr(48) Or Caracter > Chr(57) Then
Texto = Replace(Texto, Caracter, "")
ValidarNumero = Texto
Else
End If
End If
Next i
ValidarNumero = Texto
On Error GoTo 0
End Function
Validar Números: Ingresar una cierta cantidad de Números.
Ahora vamos a validar el cuadro de texto cuyo nombre es TextBox8. Esto lo podemos hacer con el evento Exit para exigirle al usuario que escriba menos de 10 números, con esta línea de código «If VBA.Len(Me.TextBox8.Value) < 10 Then» entonces si escribe mas de 10 dígitos saltará una alerta impidiendo al usuario seleccionar cualquier otro elemento hasta que escriba menos de 10 números.
Private Sub TextBox8_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If VBA.Len(Me.TextBox8.Value) < 10 Then
MsgBox "El Número debe de tener menos de 10 dígitos", vbaExclamation
Cancel = True
Else
' No hace nada
End If
End Sub
Validar Números método 2
El siguiente código nos bloqueara el ingreso de texto al nuestro TEXTBOX.
Private Sub Textbox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If (KeyAscii >= 46 And KeyAscii <= 57) Then
KeyAscii = KeyAscii
Else
KeyAscii = 0
End If
End Sub
Validar Números y Textos: limitar el ancho de una cadena usando la propiedad MaxLength
Para poner un número máximo a una cadena de Textos o Números podemos utilizar la Propiedad MaxLength de VBA.
Validar Correo, Email: Valida correos, emails con una función.
Function Valida_Correo(email As String) As Boolean
Application.Volatile
'Declaramos variables
Dim oReg As RegExp
' Crea un Nuevo objeto RegExp
Set oReg = New RegExp
On Error GoTo ErrorHandler
'Expresión regular para validar direcciones .com
'oReg.Pattern = "^[\w-\.]+@\w+\.\w+$"
' Expresión regular para validar direcciones .com.pe
oReg.Pattern = "^([a-zA-Z0-9_\-\.]+)@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$"
' Comprueba y Retorna TRue o false
Valida_Correo = oReg.Test(email)
Set oReg = Nothing
Exit Function
'En caso de error
ErrorHandler:
MsgBox "Ha ocurrido un error: ", vbExclamation, "El Tío Tech"
End Function
Luego de crear la función podemos llamarla desde el Evento Exit o también desde un botón de formulario. En este ejemplo lo vamos a llamar desde el Evento Exit utilizando el cuadro de texto. Textbox7.
Private Sub TextBox7_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Valida_Correo(TextBox7.Value) = False Then
MsgBox "Se recomienda que valides el email", vbExclamation
Cancel = True
Else
End If
End Sub
El último paso a utilizar será activar la referencia «Microsoft VBScript Regular Expresions 1.0» para validar el email. Clic en la pestaña referencias > luego activar «Microsoft VBScript Regular Expresions 1.0».
Excelente