A00: Überprüfen einer E-Mail-Adresse bei Eingabe

Hallo,
ich würde gerne E-Mail-Adressen automatisch bei der Eingabe soweit möglich auf ihre Richtigkeit prüfen, z.B. keine Umlaute oder zwei @-Zeichen usw.
Hat jemand einen passenden VBA-Code oder ein Makro?
Viele Grüße, Stefan Horn

Hallo,

mit diesem VBA-Code funktioniert es bei mir (Access 2000):


Dim Mail As String
Dim l As Integer
Dim Z As String
Dim AT As Integer

On Error GoTo Ende

Mail = Forms![Formular_xy]![Feldxy]

l = Len(Mail)
AT = 0
Debug.Print l

For I = 1 To l
Z = Mid(Mail, I, 1)

If AT > 1 Then

MsgBox „@ darf nur einmal vorkommen“, vbOKOnly
Exit Sub

ElseIf Z = „Ü“ Or Z = „Ö“ Or Z = „Ä“ Then

MsgBox „Bitte keine Umlaute verwenden“, vbOKOnly
Exit Sub

ElseIf Z = „@“ Then AT = AT + 1
Else
End If

Next I

Ende: Exit Sub

Wie folgt einfügen:

  • Das Formular in der Entwurfsansicht öffnen
  • Die Eigenschaften des Eingabefeldes mit Rechtsklick anzeigen lassen
  • Registerkarte „Ereignis“, Ereignistyp „Beim Verlassen“ als Ereignisprozedur einfügen
  • Bezeichnung der Prozedeur und „End sub“ fügt Access selber ein, deswegen fehlen sie im obigen Code
  • Die Formular- und Feldbezeichnung (Zeile 6) anpassen

Gruß

Steffen

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Steffen,
danke erstmal für den VBA-Code. Folgende Verbesserungsvorschläge habe ich noch (wenn du mal Zeit dafür hast):

  • Es gibt keine Fehlermeldung, falls kein @-Zeichen in der Adresse vorhanden ist.
  • Die Top-Level-Domäne wird nicht überprüft, also keine Fehlermeldung, falls das „.de“ usw. am Ende fehlt. Bedingung: Zeichenfolge rechts vom letzten Punkt mindestens zwei Zeichen.
    Vielleicht hilft dir die Seite http://www.kraasch.de/vba002.htm weiter (ich konnte damit nicht viel anfangen).
    Grüße, Stefan
  • Es gibt keine Fehlermeldung, falls kein @-Zeichen in der
    Adresse vorhanden ist.
  • Die Top-Level-Domäne wird nicht überprüft, also keine

Probier’s mal damit:

[pre]
Dim Mail As String
Dim Dom As String
Dim Dom1 As String
Dim L As Integer
Dim Z As String
Dim AT As Integer

On Error GoTo Ende

Mail = Forms![Formular2]![Mail]

L = Len(Mail)
AT = 0

For F = 1 To L
Z = Mid(Mail, F, 1)
If AT > 1 Then

MsgBox „@ darf nur einmal vorkommen“, vbOKOnly
Exit Sub

ElseIf Z = „Ü“ Or Z = „Ö“ Or Z = „Ä“ Then

MsgBox „Bitte keine Umlaute verwenden“, vbOKOnly
Exit Sub

ElseIf Z = „@“ Then AT = AT + 1
Else
End If

Next F

Dom = Right(Mail, 3)
Dom1 = Left(Dom, 1)
If Dom1 „.“ Then

MsgBox „Top-Level-Domain überprüfen“, vbOKOnly

End If

If AT = 0 Then

MsgBox „Kein @ enthalten“, vbOKOnly

Else
End If

Ende: Exit Sub
[/pre]

Mfg

Steffen

Vielen Dank, jetzt klappt alles.