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.