Validar un email puede ser bastante complicado debido a la cantidad de opciones válidas, un correo electrónico debe tener una arroba y antes debe ir algún texto que puede contener letras, números, guiones y puntos, luego de la arroba puede ir un diferentes textos separados por puntos.
Hasta ahora la mejor forma que he encontrado es usando expresiones regulares, mediante estas podemos buscar textos basándonos en patrones muy complejos. Por ejemplo para identificar un email podríamos usar este patrón:
^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$
Ahora podemos usar esta expresión en nuestras hojas de cálculo creando una función personalizada.
Validar un email mediante función personalizada
Primero ingresamos al editor de VBA (presionando Ctrl+F11) agregamos un modulo y digitamos este código:
Function validaEmail(email) As Boolean Dim RegEx As Object Set RegEx = CreateObject("vbscript.regexp") With RegEx .Global = True .Pattern = "^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$" End With validaEmail = RegEx.Test(email) Set RegEx = Nothing End Function
Ahora podemos usar esta fórmula personalizada en la hoja de Excel.
Hola, probé la función y corrió perfectamente. Cómo hacer para que no valide si el campo está vacío?
Hola Annie, solo agrega esto en la linea 4
If email = “” Then
validaEmail = True
Exit Function
End If
Muchas Gracias!! Estoy aprendiendo ^^ . Así es, me ayudaste a resolverlo.