VALIDAR EMAILO

AMORIM 17/05/2017 12:39:50
#474003
Ola pessoal estou tentando fazer uma função para validar email, a funçãom esta funcionando so que estou tentando impedir que o email termina com um ponte mais não estou conseguindo

exemplo; igadino@gmail.com - certo
exemplo igadino@gmail.com. - errado

alguém tem uma solução para minha função

Public Function ValidEMail(Email As String) As Boolean
Dim Caractere As Integer
Dim Count As Integer
Dim Letras As String
[ô]Verifica se o e-mail tem no MÍNIMO 5 caracteres (a@b.c)
If Len(Email) < 5 Then
[ô]O e-mail é inválido, pois tem menos
[ô]de 5 caracteres
ValidEMail = False
MsgBox([Ô]O e-mail digitado tem menos de 5 caracteres!!![Ô], vbCritical, [Ô]ATENÇÃO[Ô])
Exit Function
End If
[ô]Verificar a existencia de arrobas (@) no e-mail
For Caractere = 1 To Len(Email)
If Mid(Email, Caractere, 1) = [Ô]@[Ô] Then
[ô]OPA!!! Achou uma arroba!!!
[ô]Soma 1 ao contador
Count = Count + 1
End If
Next
[ô]Verifica o número de arrobas.
[ô]TEM que ter [Ô][Ô][Ô]UMA[Ô][Ô][Ô] arroba
If Count <> 1 Then
[ô]O e-mail é inválido, pois tem 0 ou
[ô]mais de 1 arroba
ValidEMail = False
MsgBox([Ô]O nº de arrobas (@) do e-mail é inválido!!![Ô], vbCritical, [Ô]ATENÇÃO[Ô])
Exit Function
Else
[ô]O e-mail tem 1 arroba.
[ô]Verificar a posição da arroba
If InStr(Email, [Ô]@[Ô]) = 1 Then
[ô]O e-mail é inválido, pois começa
[ô]com uma @
ValidEMail = False
MsgBox([Ô]O e-mail foi iniciado com uma arroba (@)!!![Ô], vbCritical, [Ô]ATENÇÃO[Ô])
Exit Function
ElseIf InStr(Email, [Ô]@[Ô]) = Len(Email) Then
[ô]O e-mail é inválido, pois termina
[ô]com uma @
ValidEMail = False
MsgBox([Ô]O e-mail termina com uma arroba (@)!!![Ô], vbCritical, [Ô]ATENÇÃO[Ô])
Exit Function
End If
End If
Caractere = 0
Count = 0
[ô]Verificar a existencia de pontos (.) no e-mail
For Caractere = 1 To Len(Email)
If Mid(Email, Caractere, 1) = [Ô].[Ô] Then
[ô]OPA!!! Achou um ponto!!!
[ô]Soma 1 ao contador
Count = Count + 1
End If
Next
[ô]Verifica o número de pontos.
[ô]TEM que ter PELO MENOS UM ponto.
If Count < 1 Then
[ô]O e-mail é inválido, pois não tem pontos.
ValidEMail = False
MsgBox([Ô]O e-mail é inválido, pois não contém pontos (.)!!![Ô], vbCritical, [Ô]ATENÇÃO[Ô])
Exit Function
Else
[ô]O e-mail tem pelo menos 1 ponto.
[ô]Verificar a posição do ponto:
If InStr(Email, [Ô].[Ô]) = 1 Then
[ô]O e-mail é inválido, pois começa
[ô]com um ponto
ValidEMail = False
MsgBox([Ô]O e-mail foi iniciado com um ponto (.)!!![Ô], vbCritical, [Ô]ATENÇÃO[Ô])
Exit Function
ElseIf InStr(Email, [Ô].[Ô]) = Len(Email) Then
[ô]O e-mail é inválido, pois termina
[ô]com um ponto.
ValidEMail = False
MsgBox([Ô]O e-mail termina com um ponto (.)!!![Ô], vbCritical, [Ô]ATENÇÃO[Ô])
Exit Function
ElseIf InStr(InStr(Email, [Ô]@[Ô]), Email, [Ô].[Ô]) = 0 Then
[ô]O e-mail é inválido, pois termina
[ô]com um ponto.
ValidEMail = False
MsgBox([Ô]O e-mail não tem nenhum ponto (.) após a arroba (@)!!![Ô], vbCritical, [Ô]ATENÇÃO[Ô])
Exit Function
End If
End If
Caractere = 0
Count = 0
[ô]Verifica se o e-mail não tem pontos
[ô]consecutivos (..) após a arroba (@).
If InStr(Email, [Ô]..[Ô]) > InStr(Email, [Ô]@[Ô]) Then
[ô]O e-mail é inválido, tem pontos
[ô]consecutivos após o @.
ValidEMail = False
MsgBox([Ô]O e-mail contém pontos consecutivos (..) após o arroba (@)!!![Ô], vbCritical, [Ô]ATENÇÃO[Ô])
Exit Function
End If
[ô]Verifica se o e-mail tem caracteres
[ô]inválidos
For Caractere = 1 To Len(Email)
Letras = Mid$(Email, Caractere, 1)
If Not (LCase(Letras) Like [Ô][a-z][Ô] Or Letras = [Ô]@[Ô] Or Letras = [Ô].[Ô] Or Letras = [Ô]-[Ô] Or Letras = [Ô]_[Ô] Or IsNumeric(Letras)) Then
[ô]O e-mail é inválido, pois tem
[ô]caracteres inválidos
ValidEMail = False
MsgBox([Ô]Foi digitado um caracter inválido no e-mail!!![Ô], vbCritical, [Ô]ATENÇÃO[Ô])
Exit Function
End If
Next
Caractere = 0
[ô]Bem, se a verificação chegou até aqui
[ô]é porque o e-mail é válido, então...
ValidEMail = True
End Function
LEANDROVIP 17/05/2017 12:55:44
#474004
Já viu algo sobre Regex?

Dá uma lida neste artigo do Macoratti
Tem alguns exemplos, inclusive um para validar E-mail.

[]'s
AMORIM 17/05/2017 13:04:56
#474005
só não estou conseguindo validar o ponto final, pois a função esta funcionando
LVFIOROT 17/05/2017 13:22:22
#474006
cara voce consegue fazer isso com 3 linhas de programação regex email

http://emailregex.com/
NILSONTRES 17/05/2017 14:04:24
#474007
Imports System.Text.RegularExpressions

Dim strRegex As String = [Ô]^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}[Ô] + [Ô]\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\[Ô] + [Ô].)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$[Ô]
Dim re As New Regex(strRegex)
If ([ô]seuemail[ô])) Then [ô] tudo normal

Else
invalido
End If
AMORIM 18/05/2017 13:31:07
#474054
Conseguir olha agora sim esta funcionando segue para quem estiver precisando

Public Function ValidEMail(sEMail As String) As Boolean
Dim nCharacter As Integer
Dim Count As Integer
Dim sLetra As String
[ô]Verifica se o e-mail tem no MÍNIMO 5 caracteres (a@b.c)
If Len(sEMail) < 5 Then
[ô]O e-mail é inválido, pois tem menos
[ô]de 5 caracteres
ValidEMail = False
[ô]Call MsgBox([Ô]O e-mail digitado tem menos de 5 caracteres!!![Ô], vbCritical, [Ô]ATENÇÃO[Ô])
MsgBox([Ô]Atenção:[Ô] + vbCrLf + [Ô]O e-mail digitado tem menos de 5 caracteres!!![Ô], MsgBoxStyle.Question, [Ô]Contas a Pagar[Ô])
Exit Function
End If
[ô]Verificar a existencia de arrobas (@) no e-mail
For nCharacter = 1 To Len(sEMail)
If Mid(sEMail, nCharacter, 1) = [Ô]@[Ô] Then
[ô]OPA!!! Achou uma arroba!!!
[ô]Soma 1 ao contador
Count = Count + 1
End If
Next
[ô]Verifica o número de arrobas.
[ô]TEM que ter [Ô][Ô][Ô]UMA[Ô][Ô][Ô] arroba
If Count <> 1 Then
[ô]O e-mail é inválido, pois tem 0 ou
[ô]mais de 1 arroba
ValidEMail = False
[ô]Call MsgBox([Ô]O nº de arrobas (@) do e-mail é inválido!!![Ô], vbCritical, [Ô]ATENÇÃO[Ô])
MsgBox([Ô]Atenção:[Ô] + vbCrLf + [Ô]O nº de arrobas (@) do e-mail é inválido!!![Ô], MsgBoxStyle.Question, [Ô]Contas a Pagar[Ô])
Exit Function
Else
[ô]O e-mail tem 1 arroba.
[ô]Verificar a posição da arroba
If InStr(sEMail, [Ô]@[Ô]) = 1 Then
[ô]O e-mail é inválido, pois começa
[ô]com uma @
ValidEMail = False
[ô]Call MsgBox([Ô]O e-mail foi iniciado com uma arroba (@)!!![Ô], vbCritical, [Ô]ATENÇÃO[Ô])
MsgBox([Ô]Atenção:[Ô] + vbCrLf + [Ô]O e-mail foi iniciado com uma arroba (@)!!![Ô], MsgBoxStyle.Question, [Ô]Contas a Pagar[Ô])
Exit Function
ElseIf InStr(sEMail, [Ô]@[Ô]) = Len(sEMail) Then
[ô]O e-mail é inválido, pois termina
[ô]com uma @
ValidEMail = False
[ô]Call MsgBox([Ô]O e-mail termina com uma arroba (@)!!![Ô], vbCritical, [Ô]ATENÇÃO[Ô])
MsgBox([Ô]Atenção:[Ô] + vbCrLf + [Ô]O e-mail termina com uma arroba (@)!!![Ô], MsgBoxStyle.Question, [Ô]Contas a Pagar[Ô])
Exit Function
End If
End If
nCharacter = 0
Count = 0
[ô]Verificar a existencia de pontos (.) no e-mail
For nCharacter = 1 To Len(sEMail)
If Mid(sEMail, nCharacter, 1) = [Ô].[Ô] Then
[ô]OPA!!! Achou um ponto!!!
[ô]Soma 1 ao contador
Count = Count + 1
End If
Next
[ô]Verifica o número de pontos.
[ô]TEM que ter PELO MENOS UM ponto.
If Count < 1 Then
[ô]O e-mail é inválido, pois não tem pontos.
ValidEMail = False
[ô]Call MsgBox([Ô]O e-mail é inválido, pois não contém pontos (.)!!![Ô], vbCritical, [Ô]ATENÇÃO[Ô])
MsgBox([Ô]Atenção:[Ô] + vbCrLf + [Ô]O e-mail é inválido, pois não contém pontos (.)!!![Ô], MsgBoxStyle.Question, [Ô]Contas a Pagar[Ô])
Exit Function
Else
[ô]O e-mail tem pelo menos 1 ponto.
[ô]Verificar a posição do ponto:
If InStr(sEMail, [Ô].[Ô]) = 1 Then
[ô]O e-mail é inválido, pois começa
[ô]com um ponto
ValidEMail = False
[ô]Call MsgBox([Ô]O e-mail foi iniciado com um ponto (.)!!![Ô], vbCritical, [Ô]ATENÇÃO[Ô])
MsgBox([Ô]Atenção:[Ô] + vbCrLf + [Ô]O e-mail foi iniciado com um ponto (.)!!![Ô], MsgBoxStyle.Question, [Ô]Contas a Pagar[Ô])
Exit Function
[ô]O e-mail é inválido, pois termina
[ô]com um ponto.
ElseIf Right$(sEMail, 1) = [Ô].[Ô] Then
ValidEMail = False
MsgBox([Ô]Atenção:[Ô] + vbCrLf + [Ô]E-Mail não Pode Terminar Com Ponto (.) ..!!![Ô], MsgBoxStyle.Question, [Ô]Contas a Pagar[Ô])
Exit Function
ElseIf InStr(InStr(sEMail, [Ô]@[Ô]), sEMail, [Ô].[Ô]) = 0 Then
[ô]O e-mail é inválido, pois termina
[ô]com um ponto.
ValidEMail = False
MsgBox([Ô]Atenção:[Ô] + vbCrLf + [Ô]O e-mail não tem nenhum ponto (.) após a arroba (@)!!![Ô], MsgBoxStyle.Question, [Ô]Contas a Pagar[Ô])
Exit Function
End If
End If
nCharacter = 0
Count = 0
[ô]Verifica se o e-mail não tem pontos
[ô]consecutivos (..) após a arroba (@).
If InStr(sEMail, [Ô]..[Ô]) > InStr(sEMail, [Ô]@[Ô]) Then
[ô]O e-mail é inválido, tem pontos
[ô]consecutivos após o @.
ValidEMail = False
[ô]Call MsgBox([Ô]O e-mail contém pontos consecutivos (..) após o arroba (@)!!![Ô], vbCritical, [Ô]ATENÇÃO[Ô])
MsgBox([Ô]Atenção:[Ô] + vbCrLf + [Ô]O e-mail contém pontos consecutivos (..) após o arroba (@)!!![Ô], MsgBoxStyle.Question, [Ô]Contas a Pagar[Ô])
Exit Function
End If
[ô]Verifica se o e-mail tem caracteres
[ô]inválidos
For nCharacter = 1 To Len(sEMail)
sLetra = Mid$(sEMail, nCharacter, 1)
If Not (LCase(sLetra) Like [Ô][a-z][Ô] Or sLetra = [Ô]@[Ô] Or sLetra = [Ô].[Ô] Or sLetra = [Ô]-[Ô] Or sLetra = [Ô]_[Ô] Or IsNumeric(sLetra)) Then
[ô]O e-mail é inválido, pois tem
[ô]caracteres inválidos
ValidEMail = False
[ô]Call MsgBox([Ô]Foi digitado um caracter inválido no e-mail!!![Ô], vbCritical, [Ô]ATENÇÃO[Ô])
MsgBox([Ô]Atenção:[Ô] + vbCrLf + [Ô]Foi digitado um caracter inválido no e-mail!!![Ô], MsgBoxStyle.Question, [Ô]Contas a Pagar[Ô])
Exit Function
End If
Next
nCharacter = 0
ValidEMail = True
End Function

Tópico encerrado , respostas não são mais permitidas