'Hittade den här koden men får ej till det. Har försökt med lite olika i Command men jag gör fel. Hej Mitt förslag är att använda Validate eventet. Hej Validate egenskapen för textboxen måste vara satt till True. Tack för era svar det gick fort. Men det som jag inte får till är att bara om man skriver .com då blir det godkänt. försökte med .se då blir det fel. Om jag läser rätt ska den ju kontrollera om det är med i koden eller läser jag av fel? Det gäller bådas svar Tror att jag hittade felet: Efter som det kan vara två eller tre tecken efter unkten bör du istället använda instrrev, vilket söker upp en sträng i en sträng baklänges. Dessutom bör du skriv Option Compare Text längst upp i modulen eller göra en LCase$(). Efter som standard i vb är känslig för stora eller små bokstäver Nu har det hänt något, nu kan det bara skrivas in två ord ex: nu, se om jag försöker med com eller annat som är tre då blir det felmeddelande. Konstigt för det har fungerat är det fel i min dator eller??? Testa: Tack nu har jag ändrat och nu tar den emot 3 & 2 utan att protestera. Prövar mera men nu ska det väl fungera.Validera rätt i tecken & längd
'En Command1
'En Text1 = strAddress Är det fel att Text ska heta strAddress
'Har kanske tagit vatten över huvudet!
Public Function ValidateEMail(ByVal strAddress As String) As Boolean
Dim lngIndex As Long ' Position på strAddress
Dim lngCountAt As Long ' Antal "@"
Dim lngLastDotPos As Long ' Position på föregående punkt
Dim strCurrentChar As String ' Buffer med strängens innehåll, ett tecken i taget.
On Error GoTo Fail_Validation
ValidateEMail = True
strAddress = Trim(strAddress)
lngLastDotPos = 0
lngCountAt = 0
' Finns inte minst (a@b.com) som längd,
' är inte adressen korrekt
If Len(strAddress) < 7 Then GoTo Fail_Validation
' Kolla vissa tecken i början av adressen.
strCurrentChar = Left$(strAddress, 1)
If strCurrentChar = "." Or strCurrentChar = "@" Or strCurrentChar = "_" Or _
strCurrentChar = "-" Then GoTo Fail_Validation
' Kontrollerar strängen mot ej godkända tecken.
For lngIndex = 1 To Len(strAddress)
strCurrentChar = Mid$(strAddress, lngIndex, 1)
' Räknar antalet "@".
If strCurrentChar = "@" Then lngCountAt = lngCountAt + 1
' Saknas punkt, är adressen ej korrekt.
If strCurrentChar = "." Then
If lngIndex = lngLastDotPos + 1 Then
GoTo Fail_Validation
Else
lngLastDotPos = lngIndex
End If
End If
Select Case Asc(strCurrentChar)
' Dessa tecken får inte användas i en email adress.
Case 1 To 44, 47, 58 To 63, 91 To 94, 96, 123 To 127, 128 To 255
GoTo Fail_Validation
End Select
Next lngIndex
' Saknas det, och endast ett "@" finns, är inte adressen korrekt
If lngCountAt <> 1 Then GoTo Fail_Validation
' Om extension inte är känt, är inte adressen godkänd
Select Case Right$(strAddress, 4)
Case ".se", ".com", ".org", ".net", ".edu", ".mil", ".gov"
' Yes, it's valid.
Case Else
GoTo Fail_Validation
End Select
ValidateEMail_Exit:
Exit Function
Fail_Validation:
ValidateEMail = False
GoTo ValidateEMail_Exit
End Function
Private Sub Command1_KeyPress(KeyAscii As Integer)
strCurrentChar
End Sub
S JSv: Validera rätt i tecken & längd
Så här bör du göra.Det funktion gör är att den
kontrollerar syntaxen på din email sträng
och lämnar True om allting är OK
Testa så här . En Text1 i den skriver du
eller klistrar in en email adress eller webadr
En Label1
Private Sub Command1_KeyPress(KeyAscii As Integer)
Dim retur As Boolean
Dim tmpStr As String
tmpStr = Text1.Text
retur = ValidateEMail(tmpStr)
If retur = False Then
MsgBox("Felaktig Emailadress")
Else
MsgBox("Inga fel hittades")
End If
End Sub
mvh
SvenSv: Validera rätt i tecken & längd
Private Sub Text1_Validate(Cancel As Boolean)
If Len(Text1.Text) Then
If ValidateEMail(Text1.Text) Then
'MsgBox "Inga fel hittades"
Else
Select Case MsgBox("Felaktig Emailadress", vbOKCancel + vbDefaultButton2 + vbInformation)
Case vbCancel
Cancel = True
End Select
End If
Else
'MsgBox "Du måste ange en adress!", vbInformation
'Cancel = True
End If
End SubSv: Validera rätt i tecken & längd
Mitt förslag är att använda Validate eventet.
Bra ! om sanningen skall fram så har jag aldrig
satt mig in i vad den händelsen utför i en TextBox
Ha det
SvenSv: Validera rätt i tecken & längd
Validate eventet inträffar innan kontrollen tappar focus. I vilket också en möjlighet för att avbryta förlusten av focus ges med cancel variabeln.
Jag tror användaren finner det iriterande att få upp en meddelande ruta för t.ex. varje gång han trycker backspace.
Detta finns ett "problem" med validate eventet. Om man stänger ned ett fönster genom X ett. Förlorar inte textrutan focus. Kan lösas med SendKeys "{tab}", True i QueryUnload,vill att validate eventet skall.Sv: Validera rätt i tecken & längd
' Om extension inte är känt, är inte adressen godkänd
Select Case Right$(strAddress, 4)
Case ".se", ".com", ".org", ".net", ".edu", ".mil", ".gov"
' Yes, it's valid.
Case Else
GoTo Fail_Validation
End Select
:-) SJSv: Validera rätt i tecken & längd
Select Case Right$(strAddress, 3) ' Från 4 till 3
Case ".se", ".nu", ".com", ".org", ".net", ".edu", ".mil", ".gov"
' Yes, it's valid.
Case Else
Det verkar fungera.
:-) S JSv: Validera rätt i tecken & längd
Option Compare Text
Private Sub Command1_Click()
Dim lPos As Long
Dim sText As String
Dim sSufix As String
sText = Text1
lPos = InStrRev(sText, ".")
If lPos Then
sSufix = Mid(sText, lPos)
Select Case sSufix
Case ".se", ".nu", ".com", ".org", ".net", ".edu", ".mil", ".gov"
' Yes, it's valid.
Case Else
MsgBox "Invalid email"
End Select
Else
MsgBox "Invalid email"
End If
End SubSv: Validera rätt i tecken & längd
* Modul *
Public Function ValidateEMail(ByVal strAddress As String) As Boolean
Dim lngIndex As Long ' Position på strAddress
Dim lngCountAt As Long ' Antal "@"
Dim lngLastDotPos As Long ' Position på föregående punkt
Dim strCurrentChar As String ' Buffer med strängens innehåll, ett tecken i taget.
On Error GoTo Fail_Validation
ValidateEMail = True
strAddress = Trim(strAddress)
lngLastDotPos = 0
lngCountAt = 0
' Finns inte minst (a@b.com) som längd,
' är inte adressen korrekt
If Len(strAddress) < 6 Then GoTo Fail_Validation
' Kolla vissa tecken i början av adressen.
strCurrentChar = Left$(strAddress, 1)
If strCurrentChar = "." Or strCurrentChar = "@" Or strCurrentChar = "_" Or _
strCurrentChar = "-" Then GoTo Fail_Validation
' Kontrollerar strängen mot ej godkända tecken.
For lngIndex = 1 To Len(strAddress)
strCurrentChar = Mid$(strAddress, lngIndex, 1)
' Räknar antalet "@".
If strCurrentChar = "@" Then lngCountAt = lngCountAt + 1
' Saknas punkt, är adressen ej korrekt.
If strCurrentChar = "." Then
If lngIndex = lngLastDotPos + 1 Then
GoTo Fail_Validation
Else
lngLastDotPos = lngIndex
End If
End If
Select Case Asc(strCurrentChar)
' Dessa tecken får inte användas i en email adress.
Case 1 To 44, 47, 58 To 63, 91 To 94, 96, 123 To 127, 128 To 255
GoTo Fail_Validation
End Select
Next lngIndex
' Saknas det, och endast ett "@" finns, är inte adressen korrekt
If lngCountAt <> 1 Then GoTo Fail_Validation
' Om extension inte är känt, är inte adressen godkänd
Select Case Right$(strAddress, 3)
Case ".se", ".nu", ".com", ".org", ".net", ".edu", ".mil", ".gov"
' Yes, it's valid.
Case Else
GoTo Fail_Validation
End Select
ValidateEMail_Exit:
Exit Function
Fail_Validation:
ValidateEMail = False
GoTo ValidateEMail_Exit
End Function
* Form *
Private Sub Text1_LostFocus()
Dim retur As Boolean
Dim tmpStr As String
tmpStr = Text1.Text
retur = ValidateEMail(tmpStr)
If retur = False Then
MsgBox ("Felaktig Emailadress")
Else
MsgBox ("Inga fel hittades")
End If
End Sub
* Slut kod *
Är det någon som har en förklaring. Det är VB 5
S JSv: Validera rätt i tecken & längd
' Om extension inte är känt, är inte adressen godkänd
Select Case Right$(strAddress, 3)
Case ".se", ".nu"
' Yes, it's valid.
Case Else
GoTo Fail_Validation
End Select
' Om extension inte är känt, är inte adressen godkänd
Select Case Right$(strAddress, 4)
Case ".com", ".org", ".net", ".edu", ".mil", ".gov"
' Yes, it's valid.
Case Else
GoTo Fail_Validation
End Select
Eler lagra positionen för den sista punkte och använd den i Right$(strAddress, 3) istället för konstanten... :O)Sv: Validera rätt i tecken & längd
:-) S J