Ikke helt, men jeg har en anden, som omskriver det til formatet: fire*nul*nul*nul*47/100
Dette er fuldt lovligt til checks (hvis det er det, du skal bruge det til!?
Public Function CheckBeløb(Beløb as String) As String Dim n As Integer CheckBeløb = \"*\" For n = 1 To Len(Beløb) Select Case Mid(Beløb, n, 1) Case \"0\": CheckBeløb = CheckBeløb & \"nul\" Case \"1\": CheckBeløb = CheckBeløb & \"et\" Case \"2\": CheckBeløb = CheckBeløb & \"to\" Case \"3\": CheckBeløb = CheckBeløb & \"tre\" Case \"4\": CheckBeløb = CheckBeløb & \"fire\" Case \"5\": CheckBeløb = CheckBeløb & \"fem\" Case \"6\": CheckBeløb = CheckBeløb & \"seks\" Case \"7\": CheckBeløb = CheckBeløb & \"syv\" Case \"8\": CheckBeløb = CheckBeløb & \"otte\" Case \"9\": CheckBeløb = CheckBeløb & \"ni\" Case \",\" CheckBeløb = CheckBeløb & Mid(Beløb, InStr(1, Beløb, \",\") + 1, 2) & \"/100\" Exit For Case \".\": CheckBeløb = Left(CheckBeløb, Len(CheckBeløb) - 1) End Select CheckBeløb = CheckBeløb & \"*\" Next n
End Function
Vær blot opmærksom på. at du skal levere beløbet som tekst! Anvend evt CStr() til at konvertere dit beløb til tekst.
Function dhNumToStr(ByVal varValue As Variant) As String
On Error GoTo HandleErrors
Dim intTemp As Integer Dim varNames As Variant Dim lngDollars As Long Dim intCents As Integer Dim strOut As String Dim strTemp As String Dim intI As Integer
If Not IsNumeric(varValue) Then Exit Function
\' 999,999,999.99 is the largest possible value. If varValue > 999999999.99 Then Exit Function varNames = Array(\"\", \"Thousand\", \"Million\")
If lngDollars > 0 Then \' Loop through each set of three digits, \' first the hundreds, then thousands, and then \' millions. Do intTemp = lngDollars Mod 1000 lngDollars = Int(lngDollars / 1000) \' Prepend spelling of new triplet of digits to the \' existing output. If intTemp <> 0 Then strOut = dhHandleGroup(intTemp) & \" \" & _ varNames(intI) & \" \" & strOut End If intI = intI + 1 Loop While lngDollars > 0 \' Handle the cents. strOut = RTrim(strOut) & \" and \" & _ Format$(intCents, \"00\") & \"/100\" End If
ExitHere: dhNumToStr = strOut Exit Function
HandleErrors: \' Handle all errors by returning an empty string strOut = \"\" Resume ExitHere End Function
Den er taget fra bogen: VBA develpers handbook. Med lidt arbejde skulle den nok kunne oversættes til dansk ;)
Private Function dhHandleGroup(ByVal intValue As Integer) As String
\' Called by dhNumToStr Static varOnes As Variant Static varTens As Variant Dim strOut As String Dim intDigit As Integer
If IsEmpty(varOnes) Then varOnes = Array(\"\", \"One\", \"Two\", \"Three\", \"Four\", \"Five\", _ \"Six\", \"Seven\", \"Eight\", \"Nine\", \"Ten\", _ \"Eleven\", \"Twelve\", \"Thirteen\", \"Fourteen\", \"Fifteen\", _ \"Sixteen\", \"Seventeen\", \"Eighteen\", \"Nineteen\", \"Twenty\") End If If IsEmpty(varTens) Then \' Elements 0 and 1 in this array aren\'t used. varTens = Array(\"\", \"\", \"Twenty\", \"Thirty\", \"Forty\", _ \"Fifty\", \"Sixty\", \"Seventy\", \"Eighty\", \"Ninety\") End If
\' Get the hundreds digit, and then the rest. intDigit = intValue \\ 100 intValue = intValue Mod 100
\' If there\'s a hundreds digit, add that now. If intDigit > 0 Then strOut = varOnes(intDigit) & \" Hundred\"
\' Handle the tens and ones digits. Select Case intValue Case 1 To 20 strOut = strOut & varOnes(intValue) Case 21 To 99 intDigit = intValue \\ 10 intValue = intValue Mod 10 If intDigit > 0 Then strOut = strOut & \" \" & varTens(intDigit) End If If intValue > 0 Then strOut = strOut & \"-\" & varOnes(intValue) End If End Select
Hvordan bruger du kommatal til dine funktionskald ??
Jeg har altid problemmer med at konvertere eks. 4000,45 til 4000.45. Både SQL strenge og også i de 2 ovennævnte funktioner, virker kun med \'.\' -Jeg kan godt oprette et nyt spørgsmål med point i.
Når jeg forsøger at anvende jeres funktioner i dag (30-01-2006) virker de ikke. Muligvis fordi jeg er en skovl til at kode, muligvis fordi der er noget versions fnidder med VBA?? - Det meste af funktionerne står med "rødt" i editoren??
Har I noget bud? - Jeg opretter gerne et nyt spørgsmål, for jeg skal nemlig bruge en funktion der kan oversætte tal til "check tekst" og allerhelst den "fulde version". (hvor 1.621,37 bliver til "ettusindesekshundredetotien 37/100" )
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.