Si alguna vegada heu necessitat de mostrar un número escrit com a text, probablement heu descobert que Excel no ofereix aquesta funció. Quan Excel no s'obté, sovint és possible corregir la deficiència mitjançant VBA. Aquí hi ha una funció VBA, anomenada SPELLDOLLARS , que podeu utilitzar en fórmules de full de treball.
Exemples d'Excel
Aquí teniu alguns exemples de SPELLDOLLARS.
El codi VBA
Per utilitzar aquest codi, premeu Alt+F11 per activar Visual Basic Editor. A continuació, trieu Insereix → Mòdul per inserir un mòdul VBA nou. Copieu el codi i enganxeu-lo al mòdul nou.
Funció SPELLDOLLARS(cel·la) com a variant
' Retorna un valor, escrit amb paraules
Dim dòlars com a corda, cèntims com a corda
Dim TextLen As Long, Pos As Long
Dim Temp As String
Dim iCentens de llarg, iTens de llarg, iOnes de llarg
Dim Ones com a variant, adolescents com a variant, tens com a variant
Atenuar unitats (2 a 5) com a cadena
Dim bHit com a booleà, NegFlag com a booleà
' És una cel·la sense nombre o buida?
Si no és Numeric(cel·la) O cel·la = "" Aleshores
SPELLDOLLARS = CVerr (xlErrValue)
Funció de sortida
Acaba si
'És negatiu?
Si cel·la < 0="" llavors="" negflag="True" cel·la="Abs(cel·la)" end="" if="" dòlars="Format(cel·la," "###0.00")="" textlen="Len(Dòlars)" -="" 3="" '="" is="" it="" too="" large?="" if="" textlen=""> 15 Aleshores
SPELLDOLLARS = CVerr (xlErrNum)
Funció de sortida
Acaba si
'Fes la part dels cèntims
Cèntims = Dret (dòlars, 2) i "/100 dòlars"
Si la cel·la < 1="" aleshores="" spelldollars="Cents" exit="" function="" end="" if="" dollars="Left(Dòlars," textlen)="" ones="Array( "“," "un",="" "dos",="" "tres",="" "quatre",="" _="" "cinc",="" "sis",="" "set",="" "vuit",="" "nou")="" adolescents="Array ("Deu"," "onze",="" "dotze",="" "tretze",= "" "catorze",="" _="" "quinze",="" "setze",="" "disset",="" "divuit",="" "dinnou")="" desenes= "Matriu (""," "“,="" "vint",="" "trenta",="" "quaranta",="" "cinquanta",="" _="""seixanta",="" "setanta",="" "vuitanta",="" "noranta")="" unitats(2)=""Mil"" unitats(3)=""Milió"" unitats( 4)=""Billion"" unitats(5)=""Billion"" temp="““" for="" pos="15" to="" 3="" step="" -3="" if="" textlen="">= Pos - 2 Aleshores
bHit = Fals
Si TextLen >= Pos Aleshores
Centenars = Asc(Mid$(Dòlars, TextLen - Pos + 1, 1)) - 48
Si iCentenes > 0 Aleshores
Temp = Temp & " " & Uns (iCent) & " Cent"
bHit = Veritat
Acaba si
Acaba si
iTens = 0
iOnes = 0
Si TextLen >= Pos - 1 Aleshores
iTens = Asc(Mid$(Dòlars, TextLen - Pos + 2, 1)) - 48
Acaba si
Si TextLen >= Pos - 2 Aleshores
iOnes = Asc(Mid$(Dòlars, TextLen - Pos + 3, 1)) - 48
Acaba si
Si iTens = 1 Aleshores
Temp = Temp & " " & Teens(iOnes)
bHit = Veritat
Altrament
Si iTens >= 2 Aleshores
Temp = Temp & " " & Tens(iTens)
bHit = Veritat
Acaba si
Si iOnes > 0 Aleshores
Si iTens >= 2 Aleshores
Temp = Temp i "-"
Altrament
Temp = Temp & " "
Acaba si
Temp = Temp i uns (iOnes)
bHit = Veritat
Acaba si
Acaba si
Si bHit I Pos > 3 Aleshores
Temp = Temp & " " & Unitats (Pos. 3)
Acaba si
Acaba si
Següent Pos
SPELLDOLLARS = Trim(Temp) & “ i “ & Cents
Si NegFlag, llavors SPELLDOLLARS = "(" & SPELLDOLLARS & ")"
Funció final