Ak ste niekedy potrebovali zobraziť číslo napísané ako text, pravdepodobne ste zistili, že Excel takúto funkciu neponúka. Keď sa Excel nepodarí dodať, často je možné opraviť nedostatok pomocou VBA. Tu je funkcia VBA s názvom SPELLDOLLARS , ktorú môžete použiť vo vzorcoch pracovného hárka.
Excel príklady
Tu je niekoľko príkladov SPELLDOLLARS.
Kód VBA
Ak chcete použiť tento kód, stlačte Alt+F11, čím aktivujete editor jazyka Visual Basic. Potom vyberte Vložiť → Modul a vložte nový modul VBA. Skopírujte kód a vložte ho do nového modulu.
Funkcia SPELLDOLLARS(bunka) Ako variant
' Vráti hodnotu vyjadrenú slovami
Stlmte doláre ako reťazec, centy ako reťazec
Dim TextLen As Long, Pos As Long
Dim Temp As String
Dim iHundreds as Long, iTens as long, iones as long
Tlmené ako variant, tínedžeri ako variant, desiatky ako variant
Dim Units(2 to 5) As String
Dim bHit As Boolean, NegFlag As Boolean
Nie je to číslo alebo prázdna bunka?
If Not IsNumeric(cell) Or cell = „“ Potom
SPELLDOLLARS = CVERr(xlErrValue)
Funkcia ukončenia
Koniec Ak
'Je to negatívne?
Ak bunka < 0="" then="" negflag="True" cell="Abs(bunka)" end="" if="" dollars="Formát(bunka," "###0,00")="" textlen="Len(dolárov)" -="" 3="" '="" is="" it="" too="" large?="" if="" textlen=""> 15 Potom
SPELLDOLLARS = CVERr(xlErrNum)
Funkcia ukončenia
Koniec Ak
' Rozdeľte centy
Centy = vpravo (doláre, 2) & „/100 dolárov“
Ak bunka < 1="" then="" spelldollars="Cents" exit="" function="" end="" if="" dollars="Left(dollars," textlen)="" ones="Array( ""," "jeden",="" "dva",="" "tri",="" "štyri",="" _="" "päť",="" "šesť",="" "sedem",="" "osem",="" "deväť")="" teens="Pole("Desať", "jedenásť",="" "dvanásť",="" "trinásť",= "" "štrnásť",="" _="" "pätnásť",="" "šestnásť",="" "sedemnásť",="" "osemnásť",="" "devätnásť")="" desiatky= "Array(""," "",="" "dvadsať",="" "tridsať",="" "štyridsať",="" "päťdesiat",="" _="""šesťdesiat",="" "sedemdesiat",="" "osemdesiat",="" "deväťdesiat")="" jednotiek(2)=""Tisíc"" jednotiek(3)=""Milión"" jednotiek( 4)=""Bilión"" jednotky(5)=""Tbilión"" temp="""" for="" pos="15" to="" 3="" step="" -3="" if="" textlen="">= Poz. - 2 Potom
bHit = nepravda
Ak TextLen >= Poz. Potom
iHundreds = Asc(Mid$(dolárov, TextLen - Poz + 1, 1)) - 48
Ak iHundreds > 0 Potom
Teplota = Teplota & „ “ & Jednotky (i stovky) & „ Sto“
bHit = pravda
Koniec Ak
Koniec Ak
iTens = 0
iOne = 0
Ak TextLen >= Poz. - 1 Potom
iTens = Asc(Mid$(doláre, TextLen - Poz + 2, 1)) - 48
Koniec Ak
Ak TextLen >= Poz. - 2 Potom
iOnes = Asc(Mid$(dolárov, TextLen - Poz + 3, 1)) - 48
Koniec Ak
Ak iTens = 1, potom
Temp = Temp & “ “ & Teens (iOnes)
bHit = pravda
Inak
Ak iTens >= 2 Potom
Teplota = Teplota & „ “ & Desiatky (iTens)
bHit = pravda
Koniec Ak
Ak iOnes > 0 Potom
Ak iTens >= 2 Potom
Teplota = Teplota & „-“
Inak
Teplota = Teplota & „ “
Koniec Ak
Temp = Temp & Ones (iOnes)
bHit = pravda
Koniec Ak
Koniec Ak
Ak bHit And Poz > 3 Potom
Teplota = Teplota & „ “ & Jednotky (Poz. 3)
Koniec Ak
Koniec Ak
Ďalšia poz
SPELLDOLLARS = Trim (Temp) & “ a “ & Cents
If NegFlag Then SPELLDOLLARS = “(“ & SPELLDOLLARS & “)”
End Function