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
excelente por el momento
Excelente, amigo gracias
Buenas tardes, tengo una duda. Cuando ya se da clic en Registrar, el valor que esta en el cuadro de texto Nro de Registro se pasa a la tabla de Excel en formato Texto, debería pasar en formato número para que la función de contar y generar el número de registro se efectué. Vi que se pasa como texto y no como número. Cómo podemos arreglar ese problema? Gracias
Buenas noches. Podría explicar cómo validar numeros que sean importes, o sea como pesos y centavos. Gracias
Ahh, tengo que decir que el curso es excelente. Gracias.
Necesito una ayuda .en cuadro de texto necesito poner un informe, como puedo poner en varios reglones ya que no me permite hacer un un informe . esto es posile???
Hola; excelente curso, pero no me funcionó la validación de texto, no me deja introducir nada, ni números, ni texto, que puedo hacer para solucionarlo?
me aparece que » no se ha definido el tipo definido por el usuario»
:/
El error me lo da en las validaciones en «oReg As RegExp»
AYUDAAA 🙁
Estimado, me ha servido mucho tus cursos, sin embargo tengo una duda. De las validaciones no veo ninguna cuando tienes que mezclar números y letras por ejemplo ingresar en el campo de dirección en donde se necesitan números y letras. Tu me podrías indicar las validaciones para ese tipo de campo, por favor. Gracias soy de chile
Katherinne
buenas tardes, soy muy novato en estos temas, pero muy novato. estoy haciendo un formulario en word donde quiero ingresar en un textbox una serie de cantidades , con números decimales, pero no me los reconoce. He utilizado el «CDbl» y no doy con ello. soy muy torpe. Supongo que el codigo deVBA Excel será el mismo que para Word. Gracias de antemano
Hola, muy buenos tus tutoriales, tengo una consulta: copio la funcion para validar correos y al ejecutarlo me sale el siguiente mensje de error: dim oREG as RegExp – breakpoint not allowed in this line. me podrias explicr por favor cual mi error