Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

E-Mail auf Syntax prüfen


Betrifft: E-Mail auf Syntax prüfen von: Julius van Vern
Geschrieben am: 17.09.2019 14:46:40

Hallo zusammen :)

Ich stelle mich mal wieder etwas dumm ;-)

Ich habe ein Textfeld. Darin enthalten ein String (Email Adresse).

Dieser soll auf Syntaktische Korrektheit geprüft werden.

Hier zu habe ich auch etwas gefunden.

In dem Wiki ist eine Funktion beschrieben:

Public Function IsValidEMail(Text) As Boolean
           
             'Quelle: www.dbwiki.net oder www.dbwiki.de
           
             Dim ch        As String * 1
             Dim i         As Long
             Dim ats       As Long
             Dim periods   As Long
             Dim leftOfAt  As Boolean
             Dim isLeading As Boolean
           
             If IsNull(Text) Then Exit Function
           
             leftOfAt = True
             isLeading = True
           
             For i = 1 To Len(Text)
                Select Case Asc(Mid$(Text, 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(Text) - 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

Jetzt dachte ich, ich pack das in ein Modul, nenne das Modul IsValidEMail und versuche das im Code der Userform über Textbox_change() zu verarbeiten.
Private Sub TextBoxEmail_Change()
              If IsValidEMail = False Then
                  MsgBox ("Keine gültige Email")
              End If
          End Sub

Da die Funktion ja True oder False zurück gibt, dachte ich kann das direkt so nehmen.

Aber, ich denke ich bin da mal wieder voll falsch.

Vielleicht gibt mir wer einen Denkanstoß oder zeigt mir wie ich die Private Sub umbauen kann.

Es soll nach dem Verlassen der Textbox geprüft werden ob die Email eine Gültige Email nach notwendigen Konventionen ist.

Vielen lieben Dank
  

Betrifft: AW: E-Mail auf Syntax prüfen von: 1713480.html
Geschrieben am: 17.09.2019 15:05:40

Hi, zuerst mal musst Du der Function die Mailadresse übergeben:

If IsValidEMail(TextBoxEmail) = False Then

ich würde auch nicht unbedingt das Change-Ereignis nutzen, da (glaube ich) dann jeder Tastenanschlag das Ereignis auslöst, eher das Exit-Ereignis

Gruß
Regina

  

Betrifft: AW: E-Mail auf Syntax prüfen von: 1713483.html
Geschrieben am: 17.09.2019 15:19:53

Hallo Regina,

danke für deine schnelle Antwort. Ich hab es mal entsprechend geändert.

Ich bekomme aber, das eine Variable oder Prozedur erwartet wird, anstelle eines Moduls.

Muss ich die Funktion in den Code der UserForm eintragen? Oder muss ich irgendwo noch sagen das er die Funktion in einem Modul findet?

  

Betrifft: AW: E-Mail auf Syntax prüfen von: 1713486.html
Geschrieben am: 17.09.2019 15:25:32

Nein, es war schon fast richtig, wie du es gemacht hast. Aber wie Regina schon gesagt hat, du mist den Textstring aus der Textbox auch an die Funktion uebergeben, weil sonst ist nichts da zum pruefen. Und benutze das Exit oser AfterUpdate Ereignis der Textbox:

       Private Sub TextBoxEmail_Exit(ByVal Cancel As MSForms.ReturnBoolean)
       
       If IsValidEMail(TextBoxEmail) = False Then
           MsgBox ("Keine gültige Email")
       End If
       
       End Sub
       
       
Gruss Torsten
  

Betrifft: AW: E-Mail auf Syntax prüfen von: 1713487.html
Geschrieben am: 17.09.2019 15:26:52

Evtl. kann die meldung auch daran liegen, dass die Prozedur den gleichen Namen trägt, wie das Modul. Das ist nicht zulässig

Gruß
Regina

  

Betrifft: AW: E-Mail auf Syntax prüfen von: 1713492.html
Geschrieben am: 17.09.2019 15:34:29

Hallo Regina, ich das Modul jetzt umbenannt in IsValidEMailModul und entsprechend in die If Anweisung eingetragen. Aber ich bekomme den gleichen Fehler. Ich bau das jetzt mal in eine einfache Testdatei mit einer Userform und gucke ob ich da auch den Fehler bekomme. Ich kann sie ja zum testen einfach mal uploaden.

  

Betrifft: AW: E-Mail auf Syntax prüfen von: 1713495.html
Geschrieben am: 17.09.2019 15:44:13

Nein du darfst nicht den Modulnamen angeben, sondern den Funktionsnamen, so wie es in meinem Code war.

  

Betrifft: AW: E-Mail auf Syntax prüfen von: 1713490.html
Geschrieben am: 17.09.2019 15:30:39

Hallo Thorsten,

danke für die Info. Ich hatte nach dem Tipp von Regina entsprechend auf die Exit umgestellt.

Also mein Code sieht genau so aus wie deine Änderungen. :)

Bekomme aber diese Fehlermeldung. :-/

---------------------------
Microsoft Visual Basic for Applications
---------------------------
Fehler beim Kompilieren:

Variable oder Prozedur anstelle eines Moduls erwartet
---------------------------
OK Hilfe
---------------------------

  

Betrifft: AW: E-Mail auf Syntax prüfen von: 1713491.html
Geschrieben am: 17.09.2019 15:32:20

Ja dann vielleicht Reginas Tip. Hast du das Modul mit der Funktion umbenannt? Wenn ja, aendere den Namen wieder.

  

Betrifft: AW: E-Mail auf Syntax prüfen von: 1713494.html
Geschrieben am: 17.09.2019 15:43:53

Okay, nun scheint es zu Funktionieren. Mir ist genau der Fehler dann doch aufgefallen, Modul und Prozedur hatten den gleichen Namen. Das ist ja quatsch. Obwohl ich es geändert hatte, war ich blöd genug ihn noch einmal in die Prozedur zu schreiben. :D

Jetzt bekomme ich meine Meldung, das die Email falsch ist, wenn nur wirre Zeichen drin stehen. :)

Vielen Dank ihr lieben :)

  

Betrifft: AW: E-Mail auf Syntax prüfen von: 1713496.html
Geschrieben am: 17.09.2019 15:44:57

Na dann vergiss meinen anderen Post.
Viel Spass

Beiträge aus dem Excel-Forum zum Thema "E-Mail auf Syntax prüfen"