Dim aux, archivo, aux1, aux2 As String
Dim z, n, k, x, p As Double
Dim anterior, cont, linea, m, r, j, i As Integer
Dim vector(1 To 3) As Integer
Dim num, numero As String
Dim centavos As Boolean
Public Sub func(x As Double)
Dim o, b As Long
Dim v As Double
m = (i - 1) - ((i - 1) Mod 3)
k = x
For j = 1 To m
k = k / 10
Next
o = 10
For j = 2 To m
o = o * 10
Next
x = Round(k - Int(k)) * o
k = Int(k)
For j = 1 To 3
vector(j) = 0
Next
b = 3
For j = (i - m) To 1 Step -1
v = Round((((k / 10) - Int(k / 10)) * 10))
vector(b) = Int(v)
k = Int(k / 10)
b = b - 1
Next
Select Case vector(1)
Case 1
If (vector(2) = 0) And (vector(3) = 0) Then
numero = numero & "cien "
Else
numero = numero & "ciento "
End If
Case 2
numero = numero & "doscientos "
Case 3
numero = numero & "trescientos "
Case 4
numero = numero & "cuatrocientos "
Case 5
numero = numero & "quinientos "
Case 6
numero = numero & "seiscientos "
Case 7
numero = numero & "setecientos "
Case 8
numero = numero & "ochocientos "
Case 9
numero = numero & "novectorientos "
Case Else
End Select
Select Case vector(2)
Case 1
Select Case vector(3)
Case 1
numero = numero & "once "
Case 2
numero = numero & "doce "
Case 3
numero = numero & "trece "
Case 4
numero = numero & "catorce "
Case 5
numero = numero & "quince "
Case 0
numero = numero & "diez "
Case Else
numero = numero & "dieci"
End Select
Case 2
If vector(3) = 0 Then
numero = numero & "veinte "
Else
numero = numero & "veinti"
End If
Case 3
If vector(3) = 0 Then
numero = numero & "treinta "
Else
numero = numero & "treinta y "
End If
Case 4
If vector(3) = 0 Then
numero = numero & "cuarenta "
Else
numero = numero & "cuarenta y "
End If
Case 5
If vector(3) = 0 Then
numero = numero & "cincuenta "
Else
numero = numero & "cincuenta y "
End If
Case 6
If vector(3) = 0 Then
numero = numero & "sesenta "
Else
numero = numero & "sesenta y "
End If
Case 7
If vector(3) = 0 Then
numero = numero & "setenta "
Else
numero = numero & "setenta y "
End If
Case 8
If vector(3) = 0 Then
numero = numero & "ochenta "
Else
numero = numero & "ochenta y "
End If
Case 9
If vector(3) = 0 Then
numero = numero & "noventa "
Else
numero = numero & "noventa y "
End If
Case 0
End Select
Select Case vector(3)
Case 1
If vector(2) <> 1 Then
If (i > 3) Then
If Not ((vector(1) = 0) And (vector(2) = 0) And (((Int((i - 1) / 3)) Mod 3) = 1)) Then
numero = numero & "un "
End If
Else
numero = numero & "uno "
End If
End If
Case 2
If vector(2) <> 1 Then
numero = numero & "dos "
End If
Case 3
If vector(2) <> 1 Then
numero = numero & "tres "
End If
Case 4
If vector(2) <> 1 Then
numero = numero & "cuatro "
End If
Case 5
If vector(2) <> 1 Then
numero = numero & "cinco "
End If
Case 6
numero = numero & "seis "
Case 7
numero = numero & "siete "
Case 8
numero = numero & "ocho "
Case 9
numero = numero & "nueve "
Case 0
End Select
i = m
End Sub
Public Function NumALetras(num As Double) As String
centavos = False
numero = ""
n = num
z = Round((n - Int(n)) * 100)
n = Int(n)
For r = 1 To 2
If (n = 0) And (r = 1) Then
numero = numero & "cero"
Else
x = n
i = 0
While x >= 1
x = x / 10
i = i + 1
Wend
x = n
While i > 0
Select Case (Int((i - 1) / 3) Mod 3)
Case 0
func (x)
Case 1
func (x)
If (vector(3) <> 0) Or (vector(2) <> 0) Or (vector(1) <> 0) Then
numero = numero & "mil "
End If
Case 2
func (x)
If (vector(3) = 1) And (vector(2) = 0) And (vector(1) = 0) Then
numero = numero & "millon "
Else
numero = numero & "millones "
End If
End Select
Wend
End If
n = z
If (z <> 0) Then
Select Case r
Case 1
numero = numero & " Con "
Case 2
numero = numero & " Centavos "
End Select
End If
Next
NumALetras = UCase(Mid(numero, 1, 1)) & Mid(numero, 2)
End Function