Codigo para convertir numeros a letras (pesos) en excel
'------------ INICIO DE LA FUNCION PESOS-----------------------------------
'Function Pesos(Number As Single) AsString
'Comentado el 27/10/2008: La siguiente línea corrige el error de los decimales
'en cantidades grandes, gracias a Any por la corrección.
Function Pesos(Number As Double) As String
ConstMinNum = 1#
Const MaxNum = 4294967295.99
Dim Numbers, Tenths, Result As String
Numbers = Array("CERO", "UN", "DOS", "TRES", "CUATRO", "CINCO", "SEIS", "SIETE", "OCHO", "NUEVE", "DIEZ", "ONCE","DOCE", "TRECE", "CATORCE", "QUINCE", "DIECISEIS", "DIECISIETE", "DIECIOCHO", "DIECINUEVE")
Tenths = Array("CERO", "DIEZ", "VEINTE", "TREINTA", "CUARENTA", "CINCUENTA", "SESENTA", "SETENTA","OCHENTA", "NOVENTA")
If (Number >= MinNum) And (Number <= MaxNum) Then
Result = RecurseNumber((Fix(Number)))
If Round((Number - Fix(Number)) * 100) < 10 Then
Result = Result + " 0" +Mid(Str(Round((Number - Fix(Number)) * 100)), 2, 1) + "/100 M.N."
Else
Result = Result + " " + Str(Round((Number - Fix(Number)) * 100)) + "/100 M.N."
End If
Else
Result = "Error, verifique lacantidad."
End If
Pesos = Result
End Function
Function RecurseNumber(N As Long) As String
Dim Numbers, Tenths
Numbers = Array("CERO", "UN", "DOS", "TRES", "CUATRO", "CINCO", "SEIS","SIETE", "OCHO", "NUEVE", "DIEZ", "ONCE", "DOCE", "TRECE", "CATORCE", "QUINCE", "DIECISEIS", "DIECISIETE", "DIECIOCHO", "DIECINUEVE")
Tenths = Array("CERO", "DIEZ", "VEINTE", "TREINTA", "CUARENTA","CINCUENTA", "SESENTA", "SETENTA", "OCHENTA", "NOVENTA")
Hundrens = Array("CERO", "CIENTO", "DOSCIENTOS", "TRESCIENTOS", "CUATROCIENTOS", "QUINIENTOS", "SEISCIENTOS", "SETECIENTOS", "OCHOCIENTOS","NOVECIENTOS")
Dim Result As String
Select Case N
Case 0
Result = ""
Case 1 To 19
Result = Numbers(N)
Case 20 To 99
If N Mod 10 <> 0 Then
Result = Tenths(N \ 10) + " Y " + RecurseNumber(N...
Regístrate para leer el documento completo.