yo hice uno para vb pero bien corrienton, espero te sirva

Public Function Nombra(ByVal num As Single, ByVal numfijo As Double) As String
num = Format(num, "00.00")
numletra = num \ 1000
If numletra > 0 And numletra < 21 Then
letras = letras & compara(numletra) & " MIL"
num = num - (numletra * 1000)
End If
If numletra > 20 Then
temp = numletra
If numletra > 20 And numletra < 30 Then
numletra2 = Val(Right(numletra, 1))
letras = letras & "VEINTI" & compara(numletra2) & " MIL"
Else
numletra2 = Val(Right(numletra, 1))
numletra = numletra - Val(Right(numletra, 1))
letras = letras & compara(numletra) & " Y " & compara(numletra2) & " MIL"
End If
numletra = temp
num = num - (numletra * 1000)
End If
numletra = num \ 100
If numletra > 0 Then
If numletra = 1 Then
If num = 100 Then
numletra = 100
letras = letras & " " & compara(numletra)
numletra = 1
Else
letras = letras & " CIENTO"
End If
Else
If numletra = 5 Then
letras = letras & " QUINIENTOS"
ElseIf numletra = 9 Then
letras = letras & " NOVECIENTOS"
ElseIf numletra = 7 Then
letras = letras & " SETECIENTOS"
Else
letras = letras & " " & compara(numletra) & "CIENTOS"
End If
End If
num = num - (numletra * 100)
End If
num = Val(Left(num, 2))
numletra = num \ 1
If numletra > 0 Then
temp = numletra
If numletra > 0 And numletra <= 20 Then
letras = letras & " " & compara(numletra)
End If
If numletra > 20 And numletra < 30 Then
numletra2 = Val(Right(numletra, 1))
letras = letras & " VEINTI" & compara(numletra2)
ElseIf numletra > 29 Then
numletra2 = Val(Right(numletra, 1))
If numletra2 = 0 Then
numletra = numletra - Val(Right(numletra, 1))
letras = letras & " " & compara(numletra)
ElseIf numletra2 = 1 Then
numletra = numletra - Val(Right(numletra, 1))
letras = letras & " " & compara(numletra) & " Y UN"
Else
numletra = numletra - Val(Right(numletra, 1))
letras = letras & " " & compara(numletra) & " Y " & compara(numletra2)
End If
End If
num = num - (numletra * 100)
End If
numfijo = Format(lbltotven, "00.00")
Nombra = letras & " PESOS " & Right(numfijo, 2) & " / 100 M.N."
End Function
Public Function compara(ByVal num As Single) As String
Select Case num
Case 1
compara = "UN"
Case 2
compara = "DOS"
Case 3
compara = "TRES"
Case 4
compara = "CUATRO"
Case 5
compara = "CINCO"
Case 6
compara = "SEIS"
Case 7
compara = "SIETE"
Case 8
compara = "OCHO"
Case 9
compara = "NUEVE"
Case 10
compara = "DIEZ"
Case 11
compara = "ONCE"
Case 12
compara = "DOCE"
Case 13
compara = "TRECE"
Case 14
compara = "CATORCE"
Case 15
compara = "QUINCE"
Case 16
compara = "DIESCISEIS"
Case 17
compara = "DIESCISIETE"
Case 18
compara = "DIECIOCHO"
Case 19
compara = "DIECINUEVE"
Case 20
compara = "VEINTE"
Case 21
compara = "VEINTIUNO"
Case 22
compara = "VEINTIDOS"
Case 30
compara = "TREINTA"
Case 40
compara = "CUARENTA"
Case 50
compara = "CINCUENTA"
Case 60
compara = "SESENTA"
Case 70
compara = "SETENTA"
Case 80
compara = "OCHENTA"
Case 90
compara = "NOVENTA"
Case 100
compara = "CIEN"
End Select
End Function