Estoy tratando de elaborar una macro que compruebe si una dirección de correo electrónico introducida por el usuario es válida
Ya tengo algo armado, y al parecer funciona según las pruebas que hice
Por lo que quiero compartirla por dos razones:
1) Para mejorarla
2) Para que cualquiera pueda utilizarla si lo necesita
Creo que lo que se tiene que considerar para que una dirección de correo electrónico sea válida es lo siguiente:
1)que tenga una cierta cantidad de caracteres (ni muchos ni pocos)
2)que tenga sólo caracteres válidos (creo que son: letras, números y los caracteres especiales: . _ - @)
3)que no empiece ni termine con los caracteres especiales
4)que no tenga 2 caracteres especiales seguidos
5)que tenga una y sólo una @
6)que tenga un y sólo un punto luego de la arroba
Estaré agradecido por cualquier error que me hagan notar
y cualquier sugerencia de alguna validación que se me haya pasado o una manera de simplificar el código será bienvenida
el código por el momento es el siguiente:
Código: Seleccionar todo
sub ValidarCorreo()
dim sCorreo as string
dim sCaracter as string
dim iSeguidos as integer
dim bSeguir as integer
dim iPosArroba as integer
dim iPosPunto as integer
dim C1 as integer, C2 as integer
sCorreo = trim(inputBox("Ingresa el correo electrónico"))
if len(sCorreo) > 7 and len(sCorreo) < 50 then 'cantidad de caracteres del correo
sCorreo = Lcase(sCorreo)
bSeguir = true
For C1 = 1 To Len(sCorreo) 'corroboramos que sea un correo válido
sCaracter = Mid(sCorreo,C1,1) 'deletrea
C2 = InStr(1, "._-@abcdefghijklmnopqrstuvwxyz0123456789", sCaracter, 0) 'muestra la posición de la cadena
if C2 = 0 then 'si encuentra un caracter no válido
msgBox "caracteres no válidos"
C1 = Len(sCorreo)
bSeguir = false
end if
if bSeguir = true and (C2 = 1 and C1 = 1) or (C2 = 2 and C1 = 1) or (C2 = 3 and C1 = 1) or (C2 = 4 and C1 = 1) then 'comienza con . _ - @
msgBox "no puede comenzar con . _ - @"
C1 = Len(sCorreo)
bSeguir = false
end if
if bSeguir = true and (C2 = 1 and C1 = Len(sCorreo)) or (C2 = 2 and C1 = Len(sCorreo)) or (C2 = 3 and C1 = Len(sCorreo)) or (C2 = 4 and C1 = Len(sCorreo)) then 'termina con . _ - @
msgBox "no puede terminar con . _ - @"
C1 = Len(sCorreo)
bSeguir = false
end if
if bSeguir = true and C2 = 1 or C2 = 2 or C2 = 3 or C2 = 4 then 'caracteres especiales seguidos
iSeguidos = iSeguidos + 1
if iSeguidos > 1 then
msgBox ". _ - @ no pueden estar seguidos"
C1 = Len(sCorreo)
bSeguir = false
end if
else
iSeguidos = 0
end if
if bSeguir = true and (C2 = 4 or C1 = Len(sCorreo)) then 'que no haya más de una @
if iPosArroba <> 0 or C1 = Len(sCorreo) then
msgBox "debe haber una y sólo una @"
C1 = Len(sCorreo)
bSeguir = false
end if
iPosArroba = C1
end if
if bSeguir = true and iPosArroba <> 0 and (C2 = 1 or C1 = Len(sCorreo)) then 'que haya un y sólo un punto luego de la @
if iPosPunto <> 0 or C1 = Len(sCorreo) then
msgBox "debe haber un y sólo un punto luego de la @"
C1 = Len(sCorreo)
bSeguir = false
end if
iPosPunto = C1
end if
next
if bSeguir = true then
msgBox "dirección de correo electrónico válida"
end if
else
msgBox "debe tener entre 8 y 50 caracteres"
end if
end sub