Hej. Jag har en Textbox som det står ett namn + ett telefonnummer i, t.ex Anders Andersson 0586-12345 När jag trycker på en knapp ska bara telefonnumret vara kvar med bindestreck emellan. Alla bokstäver + mellanslaget ska ha tagits bort. Man kanske skulle kanske kunna ta bort allt utan siffror och bindestrecket med någon kod, men då är jag rädd för namn som har ett bindestreck t.ex Lars-Göran, inte tar bort bindestrecket. Då blir det kvar före telefonnumret. Logiskt sätt så borde du inte ha något namn med "0" i... kommandot InStr ger dig positionen var "0" finns och med MID kan du då plocka ut allt ifrån "0" till slutet... Om telefonnummret är det "sista" tecknen och du har mellanrum framför så kan du hitta det sista mellanrummet med "inStrRev" och då även här använda MID... Tyvärr får jag inte till det. Skulle du kunna skriva ett kodexempel med Trim. Efter att ha dammat av VB6-dammet... "Label1" får då telefonnumret... lägg det i en egen variabel och gör vad du vill med det... Jag är nog för okunnig för att förstå detta. Om jag lägger hela koden i Formload får jag felmeddelande redan vid Dim objRE As New RegExp. Var kommer Text1 in där telefonnumret och namnet finns. Har Text1 ett annat namn i koden du skrivit. Du måste lägga till en reference till RegExp... Kan hända att det finns ett smidigare sätt... men då får någon annan visa dig det... :) Roade mig med att lösa det med denna lilla Function NumExtrBara telefonnumret kvar
Bäst vore om allt togs bort fram till nollan eftersom alla telefonnummer med riktnummer börjar med noll. Rörigt ? jag hoppas inte det.Sv: Bara telefonnumret kvar
Men det snyggaste är dock att köra med ett RegExp-utryck som då plockar ut mönstret för telefonnumret...
Denna RegExp-uttryck borde fungera för att fånga upp alla svenska telefonnummer... kör man en trim innan så behvöer man inte tänka på mellanslag...
^0[1-9]{1,3}-[0-9]{5,8}$Sv:Bara telefonnumret kvar
Sv: Bara telefonnumret kvar
Private Sub Form_Load()
Dim objRE As New RegExp
Dim objMatches As MatchCollection
Dim objMatch As Match
Dim strExample As String
objRE.Pattern = "0[1-9]{1,3}-[1-9]{5,8}"
objRE.Global = True
strExample = Replace("Kalle Svensson 0123-12345678", " ", "")
Set objMatches = objRE.Execute(strExample)
If objMatches.Count > 0 Then
For Each objMatch In objMatches
Label1.Caption = objMatch.Value 'Här kommer telefonnummret upp om det finns något som matchar...
Next
End If
Set objMatches = Nothing
Set objRE = Nothing
End Sub
Sv:Bara telefonnumret kvar
Sv: Bara telefonnumret kvar
"Project" > "References..."... Leta efter "Microsoft VBScript Regular Expressions" och markera dessa...
Då borde det fungera...Sv: Bara telefonnumret kvar
Sv:Bara telefonnumret kvar
<code>
Option Explicit
Private Sub Form_Load()
'Test input
Text1.Text = "Anders Andersson 0586-12345"
End Sub
Private Sub Command1_Click()
'Testar Functionen
MsgBox NumExtr(Text1.Text)
End Sub
Function NumExtr(ByVal tString As String) As String
Dim i As Long, sLen As Long
sLen = Len(tString)
For i = 1 To sLen
If IsNumeric(Mid$(tString, i, 1)) Then Exit For
Next 'i
NumExtr = Right$(tString, sLen - i + 1)
End Function
</code>