Premesso che ci sono le REGOULAR EXPRESSION che fanno già questo sporco lavoro...
Ti basta inserire nei Riferimenti(EarlyBinding) le LIB di REGEX:
Microsofr VbScript Regular Expression x-y
oppure in modalità LATEBINDING ed usare questo codice
Public Function ValidateEmailAddress(ByVal strEmailAddress As String) As Boolean
On Error GoTo Catch
Dim blnIsValidEmail As Boolean
' TECNICA EARLYBINDING
' Richiede RIFERIMENTI ESPLICITI
Dim objRegExp As New RegExp
' TECNICA LATE BINDING
' Dim objRegExp As Object
' Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.IgnoreCase = True
objRegExp.Global = True
objRegExp.Pattern = "^([a-zA-Z0-9_\-\.]+)@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$"
blnIsValidEmail = objRegExp.Test(strEmailAddress)
ValidateEmailAddress = blnIsValidEmail
Exit Function
Catch:
ValidateEmailAddress = False
MsgBox "ValidateEmailAddress function" & vbCrLf & vbCrLf _
& "Error#: " & Err.Number & vbCrLf & vbCrLf & Err.Description
End Function
Se invece vuoi fare con VB/A/6 o altro queste sono le mie considerazioni:
Del primo punto direi che puoi non farti carico, non è obbligatorio e la Funzione [INSTR(...)]
espone un parametro [Start] che definisce da che CharNum iniziare la verifica...
Ti basta pertanto cercare il DOT dopo la @....
Dim lngCH As Long
Dim lngDOT As Long
lngCH = InStr(StringEMAIL, "@")
If lngCH = 0 Then
MsgBox "Formato e-mail non valido", vbOKOnly + vbCritical, "ERRORE"
Else
lngDOT = InStr(lngCH, StringEMAIL, ".")
If lngDOT = 0 Then
MsgBox "Formato e-mail non valido", vbOKOnly + vbCritical, "ERRORE"
Else
MsgBox "Formato email Ok"
End If
End If