• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

controle op juist invullen email

Status
Niet open voor verdere reacties.

popipipo

Meubilair
Lid geworden
21 nov 2006
Berichten
8.426
Onderstaand is een gedeelte uit mijn vba
Code:
...
If Range("C7") = "Vul hier je email adres in." [COLOR="#FF0000"]Or IsError.Find("@", LookIn:=Range("C7"))[/COLOR] Then
str10 = "Je hebt je mailadres nog niet ingevuld (cel C7)"
...

De bedoeling hiervan is of in Cel C7 wel een juist email adres wordt ingevuld
Het eerste gedeelte gaat goed.
Maar de controle of er in cel C7 wel een @ -teken staat gaat niet goed.

Ik bedenk nu dat als je alleen controleert op het @-teken je het eerste gedeelte voor de 'Or' helemaal niet nodig hebt,
echter onderstaand werkt ook niet.
Code:
If IsError.Find("@", LookIn:=Range("c7")) Then
 
Kom je hiermee verder Willem?

Code:
Sub willem()
 Set c = Range("C7").Find("@", , xlValues, xlPart)
  If c Is Nothing Then
MsgBox "Je hebt je mailadres nog niet ingevuld (cel C7)"
 End If
End Sub
 
Ok Harry dit werkt.
Ik heb er dit van gemaakt: (verkorte versie, zit nog veel meer regels tussen maar even niet van belang voor de vraag)
Code:
Private Sub CommandButton17_Click()
Dim naam, locatie, mailadres, str8, stsr9, str10
     naam = Range("c5").Value
  locatie = Range("c6").Value
[COLOR="#FF0000"]mailadres = Range("c7").Value[/COLOR]
     
     If naam = "Vul hier je naam in." Then
        str8 = "Je hebt je naam nog niet ingevuld (cel C5)"
    Else
        str8 = "Correct ingevuld"
    End If
    
    If locatie = "Vul hier de werklokatie in." Then
        str9 = "Je hebt je werklocatie nog niet ingevuld (cel C6)"
    Else
        str9 = "Correct ingevuld"
    End If
    
 Set c = [COLOR="#FF0000"]Range("C7")[/COLOR].Find("@", , xlValues, xlPart)
  If c Is Nothing Then

    str10 = "Je hebt je mail adres nog niet ingevuld (cel C7)"
    Else
        str10 = "Correct ingevuld"
    End If
     MsgBox "Ontbreekt er nog informatie? " & Chr(13) & "" & Chr(13) & _
    "Invoer naam: " & Chr(9) & Chr(9) & str8 & Chr(13) & _
    "Invoer locatie: " & Chr(9) & Chr(9) & str9 & Chr(13) & _
    "Invoer mailadres: " & Chr(9) & Chr(9) & str10 & Chr(13) & Chr(13) & _
 "Als alles CORRECT is ingevuld kan het bestand opslagen worden."

End Sub


Ik dacht nu eenvoudig 'Range("C7")' te vervangen door 'mailadres' maar dan werkt het opeens niet.
 
Code:
Set mailadres = Range("C7")
 
Code:
Private Sub CommandButton17_Click()
Dim naam As String, locatie As String, mailadres As String
    
    naam = IIf([C5] = "Vul hier je naam in.", "Je hebt je naam nog niet ingevuld (cel C5)", "Correct ingevuld")
    locatie = IIf([C6] = "Vul hier de werklokatie in.", "Je hebt je werklocatie nog niet ingevuld (cel C6)", "Correct ingevuld")
    With CreateObject("vbscript.regexp")
        .Pattern = "^[\w-\.]{1,}\@([\da-zA-Z-]{1,}\.){1,}[\da-zA-Z-]{2,3}$"
        mailadres = IIf(Not .test([C7]), "Je hebt je mail adres nog niet ingevuld (cel C7)", "Correct ingevuld")
    End With

     MsgBox "Ontbreekt er nog informatie? " & Chr(13) & "" & Chr(13) & _
    "Invoer naam: " & Chr(9) & Chr(9) & naam & Chr(13) & _
    "Invoer locatie: " & Chr(9) & Chr(9) & locatie & Chr(13) & _
    "Invoer mailadres: " & Chr(9) & Chr(9) & mailadres & Chr(13) & Chr(13) & _
 "Als alles CORRECT is ingevuld kan het bestand opslagen worden."
End Sub
 
Laatst bewerkt:
Rudi, zou ook mijn oplossing zijn. met als kleine opmerking dat extensies langer dan 3 letters tegenwoordig legaal zijn. Nu is de kans daarop redelijk nihil, maar ik wil het toch even wegzetten ter algemene informatie :p
 
Je kan de {2,3} wijzigen in {2,6} zodat langere domeinnamen mogelijk zijn, maar kan je alle mogelijke modellen in patronen weergeven?Deze materie verandert gedurig en snel dus de juiste oplossing is er mi nooit.
Het is zoals de discussie die hier al ettelijke malen gevoerd is betreffende scheiden van adressen, je kan zoveel mogelijke combinaties proberen in te calculeren, maar ergens is er wel een combinatie die door de mazen van het net glipt.
 
Het is afweging tussen een adres toelaten die niet geldig is of een adres dat wel geldig is onterecht afwijzen. Ik ben het overigens met je eens dat het niet waterdicht kan.

Regular expression worden over het algemeen te weinig gebruikt overigens, vind ik. ;)
 
Als beginnende vba-er is de oplossing van harry voor mij het best te begrijpen.

Code:
.Pattern = "^[\w-\.]{1,}\@([\da-zA-Z-]{1,}\.){1,}[\da-zA-Z-]{2,3}$"
Dit nl een ? voor mij

Begrijp ik het goed als ik zeg dat dit gedeelte kijkt of er een '@' en een '.' staat in de cel staat?
Bedankt allen voor de aangedragen oplossingen.
 
Dit is ook nog begrijpelijk Willem, en misschien niet zo zwaar als de functie 'find'.
Code:
If InStr(1, mailadres, "@", 1) = 0 Then
  str10 = "Je hebt je mail adres nog niet ingevuld (cel C7)"
    Else
        str10 = "Correct ingevuld"
    End If
Of:
Code:
 str10 = IIf(InStr(1, mailadres, "@", 1) = 0, "Je hebt je mail adres nog niet ingevuld (cel C7)", "Correct ingevuld")
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan