Om du någonsin har behövt visa en siffra skriven som text har du förmodligen upptäckt att Excel inte erbjuder en sådan funktion. När Excel inte levererar är det ofta möjligt att rätta till bristen med hjälp av VBA. Här är en VBA-funktion, som heter SPELLDOLLARS , som du kan använda i kalkylbladsformler.
Excel-exempel
Här är några exempel på SPELLDOLLARS.

VBA-koden
För att använda den här koden, tryck på Alt+F11 för att aktivera Visual Basic Editor. Välj sedan Infoga → Modul för att infoga en ny VBA-modul. Kopiera koden och klistra in den i den nya modulen.
Funktion SPELLDOLLARS(cell) som variant
' Returnerar ett värde, stavat i ord
Dim dollar som sträng, cent som sträng
Dim TextLen As Long, Pos As Long
Dim Temp Som String
Dim iHundreds As Long, iTens As Long, iOnes As Long
Dim ettor som variant, tonåringar som variant, tiotals som variant
Dimenheter (2 till 5) som sträng
Dim bHit As Boolean, NegFlag Som Boolean
' Är det en icke-nummer eller tom cell?
Om inte IsNumeric(cell) Eller cell = ““ Då
SPELLDOLLARS = CVErr(xlErrValue)
Avsluta funktion
Avsluta om
'Är det negativt?
If cell < 0="" then="" negflag="True" cell="Abs(cell)" end="" if="" dollars="Format(cell," “###0.00”)="" textlen="Len(Dollars)" -="" 3="" '="" is="" it="" too="" large?="" if="" textlen=""> 15 Sedan
SPELLDOLLARS = CVErr(xlErrNum)
Avsluta funktion
Avsluta om
' Gör centdelen
Cent = höger(dollar, 2) & "/100 dollar"
If cell < 1="" then="" spelldollars="Cents" exit="" function="" end="" if="" dollars="Left(Dollars," textlen)="" ones="Array( "", "en",="" "två",="" "tre",="" "fyra",="" _="" "fem",="" "sex",="" "sju",="" "eight",="" "nine")="" teens="Array("Ten"," "eleven",="" "twelve",="" "thirteen",= "" "fjorton",="" _="" "femton",="" "sexton",="" "sjutton",="" "arton",="" "nitton")="" tior= "Array(““,” ““,="" "tjugo",="" "trettio",="" "fyrtio",="" "femtio",="" _="""sixty",="" "seventy",="" "eighty",="" "nittio")="" units(2)=""Tusen"" units(3)=""Million"" units( 4)=""Billion"" units(5)=""Trillion"" temp="““" for="" pos="15" to="" 3="" step="" -3="" if="" textlen="">= Pos - 2 Då
bHit = Falskt
Om TextLen >= Pos Då
iHundreds = Asc(Mid$(Dollars, TextLen - Pos + 1, 1)) - 48
Om iHundreds > 0 Då
Temp = Temp & “ “ & Ones(iHundreds) & “ Hundred”
bHit = Sant
Avsluta om
Avsluta om
iTens = 0
iOnes = 0
Om TextLen >= Pos - 1 Då
iTens = Asc(Mid$(Dollars, TextLen - Pos + 2, 1)) - 48
Avsluta om
Om TextLen >= Pos - 2 Då
iOnes = Asc(Mid$(Dollars, TextLen - Pos + 3, 1)) - 48
Avsluta om
Om iTens = 1 Då
Temp = Temp & “ “ & Teens(iOnes)
bHit = Sant
Annan
Om iTens >= 2 Då
Temp = Temp & “ “ & Tens(iTens)
bHit = Sant
Avsluta om
Om iOnes > 0 Då
Om iTens >= 2 Då
Temp = Temp & "-"
Annan
Temp = Temp & " "
Avsluta om
Temp = Temp & Ones(iOnes)
bHit = Sant
Avsluta om
Avsluta om
Om bHit And Pos > 3 Då
Temp = Temp & “ “ & Units(Pos 3)
Avsluta om
Avsluta om
Nästa Pos
SPELLDOLLARS = Trim(Temp) & “ och “ & Cents
If NegFlag Then SPELLDOLLARS = “(“ & SPELLDOLLARS & “)”
Avsluta funktion