Attribute VB_Name = "AmountToWords" ' Convierte un número a palabras en español. Uso: =SpellNumber(1234) Function SpellNumber(ByVal n As Double) As String Dim grupos As Variant, parts As String, idx As Long, num As Long, chunk As Long grupos = Array("", " Mil", " Millones", " Mil Millones") num = Int(n) If num = 0 Then SpellNumber = "Cero": Exit Function idx = 0 Do While num > 0 chunk = num Mod 1000 If chunk > 0 Then parts = TresDigitos(chunk) & grupos(idx) & " " & parts num = num \ 1000 idx = idx + 1 Loop SpellNumber = Trim(parts) End Function Private Function TresDigitos(ByVal n As Long) As String Dim u As Variant, dec As Variant, cien As Variant, s As String u = Array("", "Uno", "Dos", "Tres", "Cuatro", "Cinco", "Seis", "Siete", "Ocho", "Nueve") dec = Array("", "Diez", "Veinte", "Treinta", "Cuarenta", "Cincuenta", "Sesenta", "Setenta", "Ochenta", "Noventa") cien = Array("", "Ciento", "Doscientos", "Trescientos", "Cuatrocientos", "Quinientos", "Seiscientos", "Setecientos", "Ochocientos", "Novecientos") If n = 100 Then TresDigitos = "Cien": Exit Function If n >= 100 Then s = cien(n \ 100) & " " n = n Mod 100 End If If n >= 10 Then s = s & dec(n \ 10) & " " n = n Mod 10 End If If n > 0 Then s = s & u(n) & " " TresDigitos = Trim(s) End Function