Hvis du nogensinde har haft brug for at vise et tal skrevet ud som tekst, har du sikkert opdaget, at Excel ikke tilbyder en sådan funktion. Når Excel ikke leverer, er det ofte muligt at rette op på manglen ved at bruge VBA. Her er en VBA-funktion, kaldet SPELLDOLLARS , som du kan bruge i regnearksformler.
Excel eksempler
Her er nogle eksempler på SPELLDOLLARS.
VBA-koden
For at bruge denne kode skal du trykke på Alt+F11 for at aktivere Visual Basic Editor. Vælg derefter Indsæt → Modul for at indsætte et nyt VBA-modul. Kopier koden og indsæt den i det nye modul.
Funktion SPELLDOLLARS(celle) som variant
' Returnerer en værdi, stavet i ord
Dim dollars som streng, cents som streng
Dim TextLen As Long, Pos As Long
Dim Temp Som String
Dim iHundreds As Long, iTens As Long, iOnes As Long
Dim Ones som variant, teenagere som variant, tiere som variant
Dæmpe enheder (2 til 5) som streng
Dim bHit Som Boolean, NegFlag Som Boolean
' Er det en ikke-nummer eller tom celle?
Hvis ikke IsNumeric(celle) Eller celle = ““ Så
SPELLDOLLARS = CVErr(xlErrValue)
Afslut funktion
Afslut Hvis
'Er det negativt?
Hvis celle < 0="" then="" negflag="True" cell="Abs(cell)" end="" if="" dollars="Format(celle," "###0.00")="" textlen="Len(Dollars)" -="" 3="" '="" is="" it="" too="" large?="" if="" textlen=""> 15 Så
SPELLDOLLARS = CVErr(xlErrNum)
Afslut funktion
Afslut Hvis
'Gør cents-delen
Cents = Right(Dollars, 2) & “/100 Dollars”
Hvis celle < 1="" then="" spelldollars="Cents" exit="" function="" end="" if="" dollars="Left(Dollars," textlen)="" ones="Array( ""," "én",="" "to",="" "tre",="" "fire",="" _="" "fem",="" "seks",="" "syv",="" "otte",="" "ni")="" teens="Array("Ten"," "elleve",="" "tolv",="" "tretten",= "" "fjorten",="" _="" "femten",="" "sixteen",="" "sytten",="" "atten",="" "nitten")="" tens= "Array(““,” ““,="" "tyve",="" "tredive",="" "fyrre",="" "halvtreds",="" _="""sixty",="" "halvfjerds",="" "firs",="" "90")="" units(2)=""Tusind"" units(3)=""Million"" units( 4)="“Billion”" units(5)="“Trillion”" temp="““" for="" pos="15" to="" 3="" step="" -3="" if="" textlen="">= Pos - 2 Så
bHit = Falsk
Hvis TextLen >= Pos
iHundreds = Asc(Mid$(Dollars, TextLen - Pos + 1, 1)) - 48
Hvis iHundreds > 0 Så
Temp = Temp & “ “ & Ones(iHundreds) & “ Hundred”
bHit = Sandt
Afslut Hvis
Afslut Hvis
iTens = 0
iOnes = 0
Hvis TextLen >= Pos - 1 Så
iTens = Asc(Mid$(Dollars, TextLen - Pos + 2, 1)) - 48
Afslut Hvis
Hvis TextLen >= Pos - 2 Så
iOnes = Asc(Mid$(Dollars, TextLen - Pos + 3, 1)) - 48
Afslut Hvis
Hvis iTens = 1 Så
Temp = Temp & “ “ & Teens(iOnes)
bHit = Sandt
Andet
Hvis iTens >= 2 Så
Temp = Temp & “ “ & Tens(iTens)
bHit = Sandt
Afslut Hvis
Hvis iOnes > 0 Så
Hvis iTens >= 2 Så
Temp = Temp & "-"
Andet
Temp = Temp & " "
Afslut Hvis
Temp = Temp & Ones(iOnes)
bHit = Sandt
Afslut Hvis
Afslut Hvis
Hvis bHit Og Pos > 3 Så
Temp = Temp & “ “ & Units(Pos 3)
Afslut Hvis
Afslut Hvis
Næste Pos
SPELLDOLLARS = Trim(Temp) & “ og “ & Cents
Hvis NegFlag Så SPELLDOLLARS = “(“ & SPELLDOLLARS & “)”
Afslut funktion