Você está na página 1de 4

Function Extenso(nValor)

'
'escreve o valor em Reais por extenso
'
'
'Faz a validao do argumento
If IsNull(nValor) r nValor !" # r nValor $ %%%%%%%&%% '(en
Exit Function
End If
')eclara as vari*veis da funo
)im n+ontador, n'aman(o -s Integer
)im cValor, c.arte, cFinal -s /tring
Re)im a0rupo(1), a'exto(1) -s /tring
')efine matrizes com extensos parciais
Re)im a2nid(3%) -s /tring
a2nid(3) " 42m 45 a2nid(6) " 4)ois 45 a2nid(7) " 4'r8s 4
a2nid(1) " 49uatro 45 a2nid(:) " 4+inco 45 a2nid(;) " 4/eis 4
a2nid(<) " 4/ete 45 a2nid(=) " 4ito 45 a2nid(%) " 4Nove 4
a2nid(3#) " 4)ez 45 a2nid(33) " 4nze 45 a2nid(36) " 4)oze 4
a2nid(37) " 4'reze 45 a2nid(31) " 49uatorze 45 a2nid(3:) " 49uinze 4
a2nid(3;) " 4)ezesseis 45 a2nid(3<) " 4)ezessete 45 a2nid(3=) " 4)ezoito 4
a2nid(3%) " 4)ezenove 4
Re)im a)ezena(%) -s /tring
a)ezena(3) " 4)ez 45 a)ezena(6) " 4Vinte 45 a)ezena(7) " 4'rinta 4
a)ezena(1) " 49uarenta 45 a)ezena(:) " 4+in>?enta 4
a)ezena(;) " 4/essenta 45 a)ezena(<) " 4/etenta 45 a)ezena(=) " 4itenta 4
a)ezena(%) " 4Noventa 4
Re)im a+entena(%) -s /tring
a+entena(3) " 4+ento 45 a+entena(6) " 4)uzentos 4
a+entena(7) " 4'rezentos 45 a+entena(1) " 49uatrocentos 4
a+entena(:) " 49uin(entos 45 a+entena(;) " 4/eiscentos 4
a+entena(<) " 4/etecentos 45 a+entena(=) " 4itocentos 4
a+entena(%) " 4Novecentos 4
')ivide o valor em v*rios grupos
cValor " Format@(nValor, 4##########&##4)
a0rupo(3) " Aid@(cValor, 6, 7)
a0rupo(6) " Aid@(cValor, :, 7)
a0rupo(7) " Aid@(cValor, =, 7)
a0rupo(1) " 4#4 B Aid@(cValor, 36, 6)
'.rocessa cada grupo
For n+ontador " 3 'o 1
c.arte " a0rupo(n+ontador)
n'aman(o " /Citc((Val(c.arte) ! 3#, 3, Val(c.arte) ! 3##, 6, Val(c.arte) ! 3###, 7)
If n'aman(o " 7 '(en
If Rig(t@(c.arte, 6) !$ 4##4 '(en
a'exto(n+ontador) " a'exto(n+ontador) B a+entena(Deft(c.arte, 3)) B 4e 4
n'aman(o " 6
Else
a'exto(n+ontador) " a'exto(n+ontador) B IIf(Deft@(c.arte, 3) " 434, 4+em 4,
a+entena(Deft(c.arte, 3)))
End If
End If
If n'aman(o " 6 '(en
If Val(Rig(t(c.arte, 6)) ! 6# '(en
a'exto(n+ontador) " a'exto(n+ontador) B a2nid(Rig(t(c.arte, 6))
Else5 a'exto(n+ontador) " a'exto(n+ontador) B a)ezena(Aid(c.arte, 6, 3))
If Rig(t@(c.arte, 3) !$ 4#4 '(en
a'exto(n+ontador) " a'exto(n+ontador) B 4e 4
n'aman(o " 3
End If
End If
End If
If n'aman(o " 3 '(en
a'exto(n+ontador) " a'exto(n+ontador) B a2nid(Rig(t(c.arte, 3))
End If
Next
'0era o formato final do texto
If Val(a0rupo(3) B a0rupo(6) B a0rupo(7)) " # -nd Val(a0rupo(1)) !$ # '(en
cFinal " a'exto(1) B IIf(Val(a0rupo(1)) " 3, 4+entavo4, 4+entavos4)
Else
cFinal " 44
cFinal " cFinal B IIf(Val(a0rupo(3)) !$ #, a'exto(3) B IIf(Val(a0rupo(3)) $ 3, 4Ail(Ees 4,
4Ail(o 4), 44)
If Val(a0rupo(6) B a0rupo(7)) " # '(en
cFinal " cFinal B 4)e 4
Else
cFinal " cFinal B IIf(Val(a0rupo(6)) !$ #, a'exto(6) B 4Ail 4, 44)
End If
cFinal " cFinal B a'exto(7) B IIf(Val(a0rupo(3) B a0rupo(6) B a0rupo(7)) " 3, 4Real4,
4Reais 4)
cFinal " cFinal B IIf(Val(a0rupo(1)) !$ #, 4e 4 B a'exto(1) B IIf(Val(a0rupo(1)) " 3,
4+entavo4, 4+entavos4), 44)
End If
Extenso " cFinal
End Function

Você também pode gostar