Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Private Function Extenso(Num As String) As String
- Dim Numeros(5)
- Dim NumExtenso, Trio, TrioExtenso, c, d, u As String
- Dim iClasse As Integer
- Numeros(1) = Array("dummy", "um", "dois", "três", "quatro", "cinco", "seis", "sete", "oito", "nove")
- Numeros(2) = Array("dez", "onze", "doze", "treze", "quatorze", "quinze", "dezesseis", "dezessete", "dezoito", "dezenove")
- Numeros(3) = Array("dummy", "dummy", "vinte", "trinta", "quarenta", "cinquenta", "sessenta", "setenta", "oitenta", "noventa")
- Numeros(4) = Array("dummy", "cento", "duzentos", "trezentos", "quatrocentos", "quinhentos", "seiscentos", "setecentos", "oitocentos", "novecentos")
- Numeros(5) = Array("dummy", "mil", "milh", "bilh", "trilh", "quatrilh", "quintilh", "sextilh", "septilh", "octilh", "nonilh", "decilh", "undecilh", "duodecilh", "tredecilh", "quatordecilh", "quindecilh", "sexdecilh", "setedecilh", "octodecilh", "novedecilh", "vigesilh")
- 'Verifica se todos os elementos de Num são iguais a "0"
- For i = 1 To Len(Num)
- iClasse = iClasse + Val(Mid(Num, i, 1))
- Next
- If iClasse = 0 Then
- Extenso = "zero"
- Exit Function
- End If
- iClasse = 0
- Do While Num ""
- Trio = Right("00" + Right(Num, 3), 3) 'pega o ultimo trio de numeros, com zeros a esquerda se necessario
- c = Mid(Trio, 1, 1) 'centena
- d = Mid(Trio, 2, 1) 'dezena
- u = Mid(Trio, 3, 1) 'unidade
- If Trio = "000" Then
- TrioExtenso = ""
- ElseIf Trio = "100" Then
- TrioExtenso = "cem"
- Else
- 'Extenso no casa das centenas
- TrioExtenso = IIf(c = "0", "", Numeros(4)(Val(c)))
- 'Extenso no casa das Dezenas
- If (d = "1") Then
- If TrioExtenso = "" Then
- TrioExtenso = Numeros(2)(Val(u))
- Else
- TrioExtenso = TrioExtenso + " e " + Numeros(2)(Val(u))
- End If
- Else
- If (d <> "0") Then
- If TrioExtenso = "" Then
- TrioExtenso = Numeros(3)(Val(d))
- Else
- TrioExtenso = TrioExtenso + " e " + Numeros(3)(Val(d))
- End If
- End If
- 'Extenso no casa das unidades
- If (u <> "0") Then
- If TrioExtenso = "" Then
- TrioExtenso = Numeros(1)(Val(u))
- Else
- TrioExtenso = TrioExtenso + " e " + Numeros(1)(Val(u))
- End If
- End If
- End If
- End If
- 'Concatena o extenso do trio no extenso do numedo todo...
- If iClasse = 0 Then
- NumExtenso = TrioExtenso
- ElseIf iClasse = 1 Then
- NumExtenso = IIf(TrioExtenso = "", "", TrioExtenso + " mil " + NumExtenso)
- Else
- If TrioExtenso <> "" Then
- If Val(Trio) = 1 Then
- NumExtenso = TrioExtenso + " " + Numeros(5)(iClasse) + "ão " + NumExtenso
- Else
- NumExtenso = TrioExtenso + " " + Numeros(5)(iClasse) + "ões " + NumExtenso
- End If
- End If
- End If
- iClasse = iClasse + 1 'posicao atual no array Numeros(5), para cada trio de numeros processado
- 'Remove o ultimo trio de numeros de Num. Se o tamanho de Num < 3, seta Num para "", para finalizar o loop.
- If Len(Num) < 3 Then
- Num = ""
- Else
- Num = Mid(Num, 1, Len(Num) - 3)
- End If
- Loop
- Extenso = Trim(NumExtenso)
- End Function
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement