Text1(5) skall innehålla telefonnummer. Du har missat att tilldela värdena: Helt underbart Peter. Hej Tack SvenPon. Du kan ju prova: Andreas!! Det beror på att du har en select case för olika falla siffror. Det kanske är bättre att plocka bort mellanslag från nummret?Får inte med mig resultat ifrån en function till textruta.
Text1(6) skall innehålla faxnummer.
i text1_LostFocus skriver jag:
<code>
Select Case Index
Case 5
FormateraNummer (Text1(5))
Case 6
FormateraNummer (Text1(6))
End Select
</code>
Jag skriver alltså in talen utan bindestreck, bara med ett mellanslag.
Sen kallar jag på denna function:
<code>
Function FormateraNummer(sString) As String
Dim sText() As String, sLangd As String, sRikt As String, sTelefon As String
If Len(sString) > 0 Then
sText() = Split(sString)
sRikt = sText(0) & "-"
sLangd = Len(sText(1))
Select Case sLangd
Case 5
sTelefon = left(sText(1), 3) & " " & Right(sText(1), 2)
Case 6
sTelefon = left(sText(1), 2) & " " & Mid(sText(1), 3, 2) & " " & left(sText(1), 2)
Case 7
sTelefon = left(sText(1), 3) & " " & Mid(sText(1), 3, 2) & " " & left(sText(1), 2)
Case 8
sTelefon = left(sText(1), 3) & " " & Mid(sText(1), 3, 3) & " " & left(sText(1), 2)
End Select
sString = sRikt & sTelefon
'MsgBox sString 'här får jag med mig värde
FormateraNummer = sString 'värdet vill inte skrivas in i textrutan
End If
End Function
</code>
Vad som händer är att via msgboxen så får jag den formatering som jag vill ha, men jag får ingen förändring i textrutorna.
Vad har jag missat?Sv: Får inte med mig resultat ifrån en function till textrut
Skriv så här istället:
<code>
Select Case Index
Case 5
Text1(5) = FormateraNummer (Text1(5))
Case 6
Text1(6) = FormateraNummer (Text1(6))
End Select
</code>
/ PeterSv: Får inte med mig resultat ifrån en function till textrut
Att jag kunde missa det?Sv: Får inte med mig resultat ifrån en function till textrut
Har tjatat på dig några gånger hur du skriver Funktioner. Så här skall det vara.
Function FormateraNummer(ByVal sString As String) As String
/SvenSv: Får inte med mig resultat ifrån en function till textrut
Jo du har så rätt, men tydligen så fastnar det inte.
Jag har inte fattat det här med ByVal, och det är väll kanske där det knyter sig.Sv: Får inte med mig resultat ifrån en function till textrut
<code>
Select Case Index
Case 5
Text1(5) = FormateraNummer(Text1(5))
Case 6
Text1(6) = FormateraNummer(Text1(6))
End Select
</code>
Din kod kommer balla ur om det saknas - mellan riktnummet:
<code>
Function FormateraNummer(Value As String) As String
Dim lngPos As Long
Dim strRikt As String
Dim strTelefon As String
If Len(Value) > 0 Then
lngPos = InStr(Value, "-")
If lngPos Then
strRikt = Left(Value, lngPos)
strTelefon = Mid(Value, lngPos + 1)
Else
strTelefon = Value
End If
Select Case Len(strTelefon)
Case 5
strTelefon = Left(strTelefon, 3) & " " & Right(strTelefon, 2)
Case 6
strTelefon = Left(strTelefon, 2) & " " & Mid(strTelefon, 3, 2) & " " & Left(strTelefon, 2)
Case 7
strTelefon = Left(strTelefon, 3) & " " & Mid(strTelefon, 3, 2) & " " & Left(strTelefon, 2)
Case 8
strTelefon = Left(strTelefon, 3) & " " & Mid(strTelefon, 3, 3) & " " & Left(strTelefon, 2)
End Select
FormateraNummer = strRikt & strTelefon
End If
End Function
</code>Sv: Får inte med mig resultat ifrån en function till textrut
Tack för din fuction, den fungerar NÄSTAN bra.
Om det redan står ett tel nr tex 0470-789 12 så försöker han formatera detta igen.
Därimot om det står 08-12 12 12 så hoppar han över.Sv: Får inte med mig resultat ifrån en function till textrut
<code>
If lngPos Then
strRikt = Left(Value, lngPos)
strTelefon = Replace(Mid(Value, lngPos + 1), " ", "")
Else
strTelefon = Replace(Value, " ", "")
End If
</code>