Facebook Twitter RSS Reset

Funcion para pasar numero a texto EXCEL

Buenas modifique un poco, para que sea universal y no asigne ninguna moneda.

‘Funcion para pasar numeros a letras

Function NumLetras(Valor As Currency, Optional MonedaSingular As String = “”, Optional MonedaPlural As String = “&quotFuncion para pasar numero a texto EXCELFuncion para pasar numero a texto EXCEL As String

Dim lyCantidad As Currency, lyCentavos As Currency, lnDigito As Byte, lnPrimerDigito As Byte, lnSegundoDigito As Byte, lnTercerDigito As Byte, lcBloque As String, lnNumeroBloques As Byte, lnBloqueCero

Dim laUnidades As Variant, laDecenas As Variant, laCentenas As Variant, I As Variant ‘Si esta como Option Explicit

Dim ValorEntero As Long

Valor = Round(Valor, 2)

lyCantidad = Int(Valor)

ValorEntero = lyCantidad

lyCentavos = (Valor – lyCantidad) * 100

laUnidades = Array(“Un”, “Dos”, “Tres”, “Cuatro”, “Cinco”, “Seis”, “Siete”, “Ocho”, “Nueve”, “Diez”, “Once”, “Doce”, “Trece”, “Catorce”, “Quince”, “Dieciseis”, “Diecisiete”, “Dieciocho”, “Diecinueve”, “Veinte”, “Veintiun”, “Veintidos”, “Veintitres”, “Veinticuatro”, “Veinticinco”, “Veintiseis”, “Veintisiete”, “Veintiocho”, “Veintinueve&quotFuncion para pasar numero a texto EXCELFuncion para pasar numero a texto EXCEL

laDecenas = Array(“Diez”, “Veinte”, “Treinta”, “Cuarenta”, “Cincuenta”, “Sesenta”, “Setenta”, “Ochenta”, “Noventa&quotFuncion para pasar numero a texto EXCELFuncion para pasar numero a texto EXCEL

laCentenas = Array(“Ciento”, “Doscientos”, “Trescientos”, “Cuatrocientos”, “Quinientos”, “Seicientos”, “Setecientos”, “Ochocientos”, “Novecientos&quotFuncion para pasar numero a texto EXCELFuncion para pasar numero a texto EXCEL

lnNumeroBloques = 1

Do

lnPrimerDigito = 0

lnSegundoDigito = 0

lnTercerDigito = 0

lcBloque = “”

lnBloqueCero = 0

For I = 1 To 3

lnDigito = lyCantidad Mod 10

If lnDigito <> 0 Then

Select Case I

Case 1

lcBloque = ” ” & laUnidades(lnDigito – 1)

lnPrimerDigito = lnDigito

Case 2

If lnDigito <= 2 Then
lcBloque = ” ” & laUnidades((lnDigito * 10) + lnPrimerDigito – 1)

Else

lcBloque = ” ” & laDecenas(lnDigito – 1) & IIf(lnPrimerDigito <> 0, ” Y”, Null) & lcBloque

End If

lnSegundoDigito = lnDigito

Case 3

lcBloque = ” ” & IIf(lnDigito = 1 And lnPrimerDigito = 0 And lnSegundoDigito = 0, “Cien”, laCentenas(lnDigito – 1)) & lcBloque

lnTercerDigito = lnDigito

End Select

Else

lnBloqueCero = lnBloqueCero + 1

End If

lyCantidad = Int(lyCantidad / 10)

If lyCantidad = 0 Then

Exit For

End If

Next I

Select Case lnNumeroBloques

Case 1

NumLetras = lcBloque

Case 2

NumLetras = lcBloque & IIf(lnBloqueCero = 3, Null, ” Mil&quotFuncion para pasar numero a texto EXCELFuncion para pasar numero a texto EXCEL & NumLetras

Case 3

NumLetras = lcBloque & IIf(lnPrimerDigito = 1 And lnSegundoDigito = 0 And lnTercerDigito = 0, ” Millon”, ” Millones&quotFuncion para pasar numero a texto EXCELFuncion para pasar numero a texto EXCEL & NumLetras

End Select

lnNumeroBloques = lnNumeroBloques + 1

Loop Until lyCantidad = 0

NumLetras = NumLetras & “.” & Format(Str(lyCentavos), ” &quotFuncion para pasar numero a texto EXCELFuncion para pasar numero a texto EXCEL & ” ” & IIf(ValorEntero = 1, MonedaSingular, MonedaPlural)

End Function

1 – Abrir el Excel

2 – Presionar Shift + F11

3 – Menu Insertar Modulo

4 – Pegar el código

5 – Guardar modulo

6 – Cerrar con X o Alt + Q el V.Basic

7 – Darle guardar planilla con macro “en tipo de archivo”

la formula sería para utilizar =numletras(x) dónde x es la celda.

Espero que les sirva.

No comments yet.

Leave a Comment