Hvis du noen gang har hatt behov for å vise et tall skrevet ut som tekst, har du sannsynligvis oppdaget at Excel ikke tilbyr en slik funksjon. Når Excel ikke leverer, er det ofte mulig å rette opp mangelen ved å bruke VBA. Her er en VBA-funksjon, kalt SPELLDOLLARS , som du kan bruke i regnearkformler.
Eksempler i Excel
Her er noen eksempler på SPELLDOLLARS.
VBA-koden
For å bruke denne koden, trykk Alt+F11 for å aktivere Visual Basic Editor. Velg deretter Sett inn → Modul for å sette inn en ny VBA-modul. Kopier koden og lim den inn i den nye modulen.
Funksjon SPELLDOLLARS(celle) som variant
' Returnerer en verdi, stavet i ord
Dim dollar 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 As Variant, Tenåringer Som Variant, Tens As Variant
Dim enheter (2 til 5) som streng
Dim bHit som boolsk, NegFlag som boolsk
' Er det en ikke-nummer eller tom celle?
Hvis ikke IsNumeric(celle) Eller celle = ““ Da
SPELLDOLLARS = CVErr(xlErrValue)
Avslutt funksjon
Slutt om
'Er 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 Deretter
SPELLDOLLARS = CVErr(xlErrNum)
Avslutt funksjon
Slutt om
Gjør cents-delen
Cent = Høyre (Dollarer, 2) & "/100 Dollars"
If cell < 1="" then="" spelldollars="Cents" exit="" function="" end="" if="" dollars="Left(Dollars," textlen)="" ones="Array( ""," "en",="" "to",="" "tre",="" "fire",="" _="" "fem",="" "seks",="" "seven",="" "eight",="" "nine")="" teens="Array("Ten"," "eleven",="" "twelve",="" "thirteen",= "" "fjorteen",="" _="" "fifteen",="" "sixteen",="" "seventeen",="" "eighteen",="" "nineteen")="" tens= "Array(““,” ““,="" "tjue",="" "tretti",="" "førti",="" "femti",="" _=""“sixty”,="" “sytti”,="" “eighty”,="" “nitti”)="" units(2)="“Thousand”" units(3)="“Million”" units( 4)="“Billion”" units(5)="“Trillion”" temp="““" for="" pos="15" to="" 3="" step="" -3="" if="" textlen="">= Pos - 2 Deretter
bHit = Falsk
Hvis TextLen >= Pos Da
iHundreds = Asc(Mid$(Dollars, TextLen - Pos + 1, 1)) - 48
Hvis iHundreds > 0 Da
Temp = Temp & “ “ & Ones(iHundreds) & “ Hundred”
bHit = Sant
Slutt om
Slutt om
iTens = 0
iOnes = 0
Hvis TextLen >= Pos - 1 Da
iTens = Asc(Mid$(Dollars, TextLen - Pos + 2, 1)) - 48
Slutt om
Hvis TextLen >= Pos - 2 Da
iOnes = Asc(Mid$(Dollar, TextLen - Pos + 3, 1)) - 48
Slutt om
Hvis iTens = 1 Da
Temp = Temp & “ “ & Teens(iOnes)
bHit = Sant
Ellers
Hvis iTens >= 2 Da
Temp = Temp & “ “ & Tens(iTens)
bHit = Sant
Slutt om
Hvis iOnes > 0 Da
Hvis iTens >= 2 Da
Temp = Temp & "-"
Ellers
Temp = Temp & " "
Slutt om
Temp = Temp & Ones(iOnes)
bHit = Sant
Slutt om
Slutt om
Hvis bHit And Pos > 3 Da
Temp = Temp & “ “ & Units(Pos 3)
Slutt om
Slutt om
Neste Pos
SPELLDOLLARS = Trim(Temp) & “ og “ & Cents
If NegFlag Then SPELLDOLLARS = “(“ & SPELLDOLLARS & “)”
Avslutt funksjon