Guten Tag,
um E-Mail-Adressen in Excel auf ihre Gültigkeit zu prüfen, verwende ich VBA Makro:
Public Function IsValidEMail(S)
Dim Ch As String * 1, I As Long, Ats As Long, Periods As Long
Dim LeftofAt As Boolean, IsLeading As Boolean
IsValidEMail = True
If IsNull(S) Then Exit Function
IsValidEMail = False
LeftofAt = True
IsLeading = True
Periods = 0
Ats = 0
For I = 1 To Len(S)
Select Case Asc(Mid(S, I, 1))
Case Asc("@")
Ats = Ats + 1
' links vom "@" muss wenigstens ein Zeichen sein:
If I = 1 Then Exit Function
' nur ein "@" erlaubt:
If Ats > 1 Then Exit Function
LeftofAt = False
IsLeading = True
Case Asc(".")
' Punkte rechts vom "@" zählen:
If Not LeftofAt Then Periods = Periods + 1
' zu viele Punkte (technisch zwar möglich, aber unwahrscheinlich):
If Periods > 4 Then Exit Function
' Top Level Domain hat weniger als 2 Zeichen:
If I > Len(S) - 2 Then Exit Function
Case Asc("A") To Asc("Z"), Asc("a") To Asc("z"), Asc("0") To Asc("9")
IsLeading = False
Case Asc("-")
' kein führendes "-" erlaubt:
If IsLeading Then Exit Function
Case Asc("_")
' "_" nur links vom "@" erlaubt:
If IsLeading Or Not LeftofAt Then Exit Function
Case Else
' andere Zeichen sind nicht zulässig:
Exit Function
End Select
Next
If Periods > 0 Then IsValidEMail = True
End Function
Dies funktioniert auch soweit. Nun sind mittlerweile die Sonderzeichen Ä,Ü,Ö ja erlaubt. Leider fehlen mir komplett das Hintergrundwissen um das Skript anzupassen. Könnte mir hier jemand helfen?
Vielen Dank!
LG, Matthias
|