Ако някога сте имали нужда да покажете число, изписано като текст, вероятно сте открили, че Excel не предлага такава функция. Когато Excel не успее да достави, често е възможно да се коригира дефицитът с помощта на VBA. Ето VBA функция, наречена SPELLDOLLARS , която можете да използвате във формули на работни листове.
Примери за Excel
Ето няколко примера за SPELLDOLLARS.
VBA кодът
За да използвате този код, натиснете Alt+F11, за да активирате Visual Basic Editor. След това изберете Вмъкване → Модул, за да вмъкнете нов VBA модул. Копирайте кода и го поставете в новия модул.
Функция SPELLDOLLARS(клетка) като вариант
' Връща стойност, изписана с думи
Мътни долари като низ, центове като низ
Dim TextLen толкова дълго, Pos колкото дълго
Dim Temp като низ
Dim iHundreds колкото дълго, iTens колкото дълго, iOnes толкова дълго
Мъгливи като вариант, тийнейджъри като вариант, десетки като вариант
Dim Units (2 до 5) като низ
Dim bHit като булев, NegFlag като булев
' Нечислова или празна клетка ли е?
Ако не е числово(клетка) или клетка = „“ Тогава
SPELLDOLLARS = CVERr(xlErrValue)
Функция за изход
Край, ако
' Отрицателно ли е?
Ако клетка < 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 Тогава
SPELLDOLLARS = CVERr(xlErrNum)
Функция за изход
Край, ако
' Направете част от центовете
Центове = дясно (долара, 2) & „/100 долара“
Ако клетка < 1="" then="" spelldollars="Cents" exit="" function="" end="" if="" dollars="Left(Dollars," textlen)="" ones="Масив( „“,“ „едно“,="" „две",="" „три",="" „четири",="" _="" „пет",="" „шест",="" „седем”,="" „осем",="" „девет")="" тийнейджъри="Масив("Десет"," "единадесет",="" "дванадесет",="" "тринадесет",= "" "четиринадесет",="" _="" "петнадесет",="" "шестнадесет",="" "седемнадесет",="" "осемнадесет",="" "деветнадесет")="" десетки= „Масив(““,“ „“,="" „двадесет“,="" „тридесет“,="" „четиридесет",="" „петдесет",="" _=""“шестдесет”,="" "седемдесет",="" "осемдесет",="" "деветдесет")="" единици(2)=""Хиляда"" единици(3)=""Милион"" единици( 4)="“Билион"" единици(5)=""Трилион"" temp="""" for="" pos="15" to="" 3="" step="" -3="" if="" textlen="">= Поз - 2 Тогава
bHit = False
Ако TextLen >= Позиция Тогава
iHundreds = Asc(Mid$(долари, TextLen - Позиция + 1, 1)) - 48
Ако iHundreds > 0 Тогава
Temp = Temp & “ “ & Ones (iHundreds) & “ Hundred”
bHit = Вярно
Край, ако
Край, ако
iTens = 0
iOnes = 0
Ако TextLen >= Pos - 1 Тогава
iTens = Asc(Mid$(долари, TextLen - Позиция + 2, 1)) - 48
Край, ако
Ако TextLen >= Pos - 2 Тогава
iOnes = Asc(Mid$(долари, TextLen - Позиция + 3, 1)) - 48
Край, ако
Ако iTens = 1 Тогава
Temp = Temp & “ “ & Teens (iOnes)
bHit = Вярно
иначе
Ако iTens >= 2 Тогава
Temp = Temp & “ “ & Tens(iTens)
bHit = Вярно
Край, ако
Ако iOnes > 0 Тогава
Ако iTens >= 2 Тогава
Temp = Temp & “-”
иначе
Temp = Temp & “ “
Край, ако
Temp = Temp & Ones(iOnes)
bHit = Вярно
Край, ако
Край, ако
Ако bHit и Pos > 3 Тогава
Temp = Temp & “ “ & единици (поз. 3)
Край, ако
Край, ако
Следваща поз
SPELLDOLLARS = Trim(Temp) & “ и “ & Cents
Ако NegFlag Тогава SPELLDOLLARS = “(“ & SPELLDOLLARS & “)”
Крайна функция