Če ste kdaj morali prikazati številko, zapisano kot besedilo, ste verjetno odkrili, da Excel ne ponuja takšne funkcije. Ko Excel ne uspe, je pogosto mogoče odpraviti pomanjkljivost z uporabo VBA. Tukaj je funkcija VBA, imenovana SPELLDOLLARS , ki jo lahko uporabite v formulah delovnega lista.
Primeri v Excelu
Tukaj je nekaj primerov SPELLDOLLARS.
Koda VBA
Če želite uporabiti to kodo, pritisnite Alt+F11, da aktivirate urejevalnik Visual Basic. Nato izberite Vstavi → Modul, da vstavite nov modul VBA. Kopirajte kodo in jo prilepite v nov modul.
Funkcija SPELLDOLLARS(celica) kot različica
« Vrne vrednost, napisano z besedami
Dim Dollars As String, Cents As String
Dim TextLen As Long, Pos As Long
Dim Temp kot niz
Dim iHundreds As Long, iTens As Long, iOnes As Long
Dim Ones As Variant, Teens As Variant, Tens As Variant
Dim Units (2 do 5) kot niz
Dim bHit kot Boolean, NegFlag kot Boolean
' Ali je celica brez števila ali prazna?
Če ni, je številska(celica) ali celica = ““ Potem
SPELLDOLLARS = CVERr(xlErrValue)
Izhodna funkcija
Konec Če
' Je negativno?
Če je celica < 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 Potem
SPELLDOLLARS = CVERr(xlErrNum)
Izhodna funkcija
Konec Če
' Naredite del centov
Centi = desno (dolarja, 2) & “/100 dolarjev”
Če je celica < 1="" then="" spelldollars="Cents" exit="" function="" end="" if="" dollars="Left(Dollars," textlen)="" ones="Array( ““," “en”,="" "dva",="" "trije",="" "štiri",="" _="" "pet",="" "šest",="" "sedem",="" "osem",="" "devet")="" teens="Array("Deset"," "enajst",="" "dvanajst",="" "trinajst",= "" "štirinajst",="" _="" "petnajst",="" "šestnajst",="" "sedemnajst",="" "osemnajst",="" "devetnajst")="" desetice= "Matrika("“," "“,="" "dvajset",="" "trideset",="" "štirideset",="" "petdeset",="" _=""“šestdeset”,="" "sedemdeset",="" "osemdeset",="" "devetdeset")="" enote(2)=""Tisoč"" enot(3)=""Milijon"" enot( 4)=""Billion"" units(5)=""Bilijon"" temp="""" for="" pos="15" to="" 3="" step="" -3="" if="" textlen="">= Pos - 2 Nato
bHit = False
Če TextLen >= Pos Potem
iHundreds = Asc(Mid$(Dollars, TextLen - Pos + 1, 1)) - 48
Če je iHundreds > 0 Potem
Temp = Temp & “ “ & Ones (iHundreds) & “ Hundred”
bHit = Res
Konec Če
Konec Če
iTens = 0
iOnes = 0
Če TextLen >= Pos - 1 Potem
iTens = Asc(Mid$(Dollars, TextLen - Pos + 2, 1)) - 48
Konec Če
Če je TextLen >= Pos - 2 Potem
iOnes = Asc(Mid$(Dollars, TextLen - Pos + 3, 1)) - 48
Konec Če
Če je iTens = 1 Potem
Temp = Temp & “ “ & Teens (iOnes)
bHit = Res
Drugače
Če je iTens >= 2 Potem
Temp = Temp & “ “ & Tens (iTens)
bHit = Res
Konec Če
Če je iOnes > 0 Potem
Če je iTens >= 2 Potem
Temp = Temp & “-”
Drugače
Temp = Temp & “ “
Konec Če
Temp = Temp & Ones (iOnes)
bHit = Res
Konec Če
Konec Če
Če je bHit In Pos > 3 Potem
Temp = Temp & “ “ & enote (Poz 3)
Konec Če
Konec Če
Naslednja poz
SPELLDOLLARS = Trim(Temp) & “ in “ & Cents
Če NegFlag potem SPELLDOLLARS = “(“ & SPELLDOLLARS & “)”
Končna funkcija