Sei sulla pagina 1di 3

'Funcion para pasar numeros a l

Function NumLetras(Valor As Cu
DimlyCantidad As Currency, lyC
DimlaUnidades As Variant, laDe

1 'Funcion para pasar numeros a letras

2 Function NumLetras(Valor As Currency, Optional MonedaSingular As String = "", Optional

3 MonedaPlural As String = "") As String

4 Dim lyCantidad As Currency, lyCentavos As Currency, lnDigito As Byte, lnPrimerDigito As Byte,

5 lnSegundoDigito As Byte, lnTercerDigito As Byte, lcBloque As String, lnNumeroBloques As Byte,

6 lnBloqueCero

7 Dim laUnidades As Variant, laDecenas As Variant, laCentenas As Variant, I As Variant 'Si esta como

8 Option Explicit

9 Dim ValorEntero As Long

10 Valor = Round(Valor, 2)

11 lyCantidad = Int(Valor)

12 ValorEntero = lyCantidad

13 lyCentavos = (Valor - lyCantidad) * 100

14 laUnidades = Array("UN", "DOS", "TRES", "CUATRO", "CINCO", "SEIS", "SIETE", "OCHO", "NUEVE",

15 "DIEZ", "ONCE", "DOCE", "TRECE", "CATORCE", "QUINCE", "DIECISEIS", "DIECISIETE",

16 "DIECIOCHO", "DIECINUEVE", "VEINTE", "VEINTIUN", "VEINTIDOS", "VEINTITRES",

17 "VEINTICUATRO", "VEINTICINCO", "VEINTISEIS", "VEINTISIETE", "VEINTIOCHO",

18 "VEINTINUEVE")

19 laDecenas = Array("DIEZ", "VEINTE", "TREINTA", "CUARENTA", "CINCUENTA", "SESENTA",

2 "SETENTA", "OCHENTA", "NOVENTA")

0 laCentenas = Array("CIENTO", "DOSCIENTOS", "TRESCIENTOS", "CUATROCIENTOS",

21 "QUINIENTOS", "SEISCIENTOS", "SETECIENTOS", "OCHOCIENTOS", "NOVECIENTOS")

22 lnNumeroBloques = 1

23

24 Do

25 lnPrimerDigito = 0

26 lnSegundoDigito = 0
27 lnTercerDigito = 0

2 lcBloque = ""

8 lnBloqueCero = 0

29 For I = 1 To 3

3 lnDigito = lyCantidad Mod 10

0 If lnDigito <> 0 Then

31 Select Case I

32 Case 1

33 lcBloque = " " & laUnidades(lnDigito - 1)

34 lnPrimerDigito = lnDigito

35 Case 2

36 If lnDigito <= 2 Then

37 lcBloque = " " & laUnidades((lnDigito * 10) + lnPrimerDigito - 1)

3 Else

8 lcBloque = " " & laDecenas(lnDigito - 1) & IIf(lnPrimerDigito <> 0, " Y", Null) & lcBloque

39 End If

4 lnSegundoDigito = lnDigito

0 Case 3

41 lcBloque = " " & IIf(lnDigito = 1 And lnPrimerDigito = 0 And lnSegundoDigito = 0, "CIEN",

42 laCentenas(lnDigito - 1)) & lcBloque

43 lnTercerDigito = lnDigito

44 End Select

45 Else

46 lnBloqueCero = lnBloqueCero + 1

47 End If

4 lyCantidad = Int(lyCantidad / 10)

8 If lyCantidad = 0 Then

49 Exit For

5 End If

0 Next I
51 Select Case lnNumeroBloques

52 Case 1

53 NumLetras = lcBloque

54 Case 2

55 NumLetras = lcBloque & IIf(lnBloqueCero = 3, Null, " MIL") & NumLetras

56 Case 3

57 NumLetras = lcBloque & IIf(lnPrimerDigito = 1 And lnSegundoDigito = 0 And lnTercerDigito = 0, "

58 MILLON", " MILLONES") & NumLetras

59 End Select

lnNumeroBloques = lnNumeroBloques + 1

Loop Until lyCantidad = 0

NumLetras = NumLetras & " " & Format(Str(lyCentavos), "00") & "/100 " & IIf(ValorEntero = 1,

MonedaSingular, MonedaPlural)

End Function

Potrebbero piacerti anche