Este es un codigo que tenia por hay guardado el primer parametro es el numero, y el seguno si quieren que al final termine en O ejemplo mil uno.
Código:
  1. Public Function NroEnLetras(ByVal curNumero As Double, Optional blnO_Final As Boolean = True) As String
  2. 'Devuelve un número expresado en letras.
  3. 'El parámetro blnO_Final se utiliza en la recursión para saber si se debe colocar
  4. 'la "O" final cuando la palabra es UN(O)
  5.    Dim dblCentavos As Double
  6.     Dim lngContDec As Long
  7.     Dim lngContCent As Long
  8.     Dim lngContMil As Long
  9.     Dim lngContMillon As Long
  10.     Dim strNumLetras As String
  11.     Dim strNumero As Variant
  12.     Dim strDecenas As Variant
  13.     Dim strCentenas As Variant
  14.     Dim blnNegativo As Boolean
  15.     Dim blnPlural As Boolean
  16.    
  17.     If Int(curNumero) = 0 Then
  18.         strNumLetras = "CERO"
  19.     End If
  20.    
  21.     strNumero = Array(vbNullString, "UN", "DOS", "TRES", "CUATRO", "CINCO", "SEIS", "SIETE", _
  22.                     "OCHO", "NUEVE", "DIEZ", "ONCE", "DOCE", "TRECE", "CATORCE", _
  23.                     "QUINCE", "DIECISEIS", "DIECISIETE", "DIECIOCHO", "DIECINUEVE", _
  24.                     "VEINTE")
  25.  
  26.     strDecenas = Array(vbNullString, vbNullString, "VEINTI", "TREINTA", "CUARENTA", "CINCUENTA", "SESENTA", _
  27.                       "SETENTA", "OCHENTA", "NOVENTA", "CIEN")
  28.  
  29.     strCentenas = Array(vbNullString, "CIENTO", "DOSCIENTOS", "TRESCIENTOS", _
  30.                        "CUATROCIENTOS", "QUINIENTOS", "SEISCIENTOS", "SETECIENTOS", _
  31.                        "OCHOCIENTOS", "NOVECIENTOS")
  32.  
  33.     If curNumero < 0 Then
  34.         blnNegativo = True
  35.         curNumero = Abs(curNumero)
  36.     End If
  37.  
  38.     If Int(curNumero) <> curNumero Then
  39.         dblCentavos = Abs(curNumero - Int(curNumero))
  40.         curNumero = Int(curNumero)
  41.     End If
  42.  
  43.     Do While curNumero >= 1000000
  44.         lngContMillon = lngContMillon + 1
  45.         curNumero = curNumero - 1000000
  46.     Loop
  47.  
  48.     Do While curNumero >= 1000
  49.         lngContMil = lngContMil + 1
  50.         curNumero = curNumero - 1000
  51.     Loop
  52.  
  53.     Do While curNumero >= 100
  54.         lngContCent = lngContCent + 1
  55.         curNumero = curNumero - 100
  56.     Loop
  57.    
  58.     If Not (curNumero > 10 And curNumero <= 20#) Then
  59.         Do While curNumero >= 10
  60.              lngContDec = lngContDec + 1
  61.              curNumero = curNumero - 10
  62.         Loop
  63.     End If
  64.    
  65.     If lngContMillon > 0 Then
  66.         If lngContMillon >= 1 Then   'si el número es >1000000 usa recursividad
  67.             strNumLetras = NroEnLetras(lngContMillon, False)
  68.              If Not blnPlural Then blnPlural = (lngContMillon > 1)
  69.              lngContMillon = 0
  70.         End If
  71.         strNumLetras = Trim(strNumLetras) & strNumero(lngContMillon) & " MILLON" & _
  72.                                                                            IIf(blnPlural, "ES ", " ")
  73.     End If
  74.    
  75.     If lngContMil > 0 Then
  76.         If lngContMil >= 1 Then   'si el número es >100000 usa recursividad
  77.             strNumLetras = strNumLetras & NroEnLetras(lngContMil, False)
  78.              lngContMil = 0
  79.         End If
  80.         strNumLetras = Trim(strNumLetras) & strNumero(lngContMil) & " MIL "
  81.     End If
  82.    
  83.     If lngContCent > 0 Then
  84.         If lngContCent = 1 And lngContDec = 0 And curNumero = 0 Then
  85.              strNumLetras = strNumLetras & "CIEN"
  86.         Else
  87.              strNumLetras = strNumLetras & strCentenas(lngContCent) & " "
  88.         End If
  89.     End If
  90.    
  91.     If lngContDec >= 1 Then
  92.         If lngContDec = 1 Then
  93.              strNumLetras = strNumLetras & strNumero(10)
  94.         Else
  95.              strNumLetras = strNumLetras & strDecenas(lngContDec)
  96.         End If
  97.        
  98.         If lngContDec >= 3 And curNumero > 0 Then
  99.              strNumLetras = strNumLetras & " Y "
  100.         End If
  101.     Else
  102.         If curNumero >= 0 And curNumero <= 20 Then
  103.              strNumLetras = strNumLetras & strNumero(curNumero)
  104.              If curNumero = 1 And blnO_Final Then
  105.                  strNumLetras = strNumLetras & "O"
  106.              End If
  107.              If dblCentavos > 0 Then
  108.                  strNumLetras = Trim(strNumLetras) & " CON " & Format$(CInt(dblCentavos * 100#), "00") & "/100"
  109.              End If
  110.              NroEnLetras = strNumLetras
  111.              Exit Function
  112.         End If
  113.     End If
  114.    
  115.     If curNumero > 0 Then
  116.         strNumLetras = strNumLetras & strNumero(curNumero)
  117.         If curNumero = 1# And blnO_Final Then
  118.              strNumLetras = strNumLetras & "O"
  119.         End If
  120.     End If
  121.    
  122.     If dblCentavos > 0 Then
  123.         strNumLetras = strNumLetras & " CON " + Format$(CInt(dblCentavos * 100), "00") & "/100"
  124.     End If
  125.    
  126.     NroEnLetras = IIf(blnNegativo, "(" & strNumLetras & ")", strNumLetras)
  127. End Function