[OFF] NUMEROS POR EXTENSO

MARCOSLING 09/01/2011 15:10:58
#361673
Alguém conhece ou sabe onde encontrar as regras [Ô]oficiais[Ô] para se escrever numeros por extenso?
SNNIFFER 09/01/2011 16:47:09
#361676
Bom amigo, pode dar uma olhada num artigo que postei.

http://www.vbmania.com.br/pages/index.php?varModulo=Detalhe&varID=8914


Boa sorte.
MARCOSLING 09/01/2011 17:01:01
#361677
Citação:

:
Bom amigo, pode dar uma olhada num artigo que postei.

http://www.vbmania.com.br/pages/index.php?varModulo=Detalhe&varID=8914


Boa sorte.



Eu vi e notei que tem alguns erros.
SNNIFFER 09/01/2011 17:59:41
#361679
Cao marcos, será mais facil informar onde ocorreram os erros, para melhorar:

Num form nomeie um Text para [Ô]Valor[Ô] e outro para [Ô]Extenso[Ô] e cole no Form:

[txt-color=#e80000]Private Sub Form_Load()
[Valor] = 470.38
[Extenso] = ValoresExtenço([Valor], [Ô]Reais[Ô], 2)
End Sub

Private Sub Valor_Change()
If [Valor] <> [Ô][Ô] Then
[Extenso] = ValoresExtenço([Valor], [Ô]Reais[Ô], 2)
End If
End Sub[/txt-color]



No módulo copie e cole:
[txt-color=#e80000]
Function VECentenas(VEValor As Currency) As String

Dim Cem(1 To 9) As String
Dim Dez(1 To 10) As String
Dim Uni(1 To 19) As String
Dim VEExiste As Boolean
Dim VEExtenço As String
Dim VEValor2 As Currency

Cem(1) = [Ô]Cento[Ô]
Cem(2) = [Ô]Duzentos[Ô]
Cem(3) = [Ô]Trezentos[Ô]
Cem(4) = [Ô]Quatrocentos[Ô]
Cem(5) = [Ô]Quinhentos[Ô]
Cem(6) = [Ô]Seiscentos[Ô]
Cem(7) = [Ô]Setecentos[Ô]
Cem(8) = [Ô]Oitocentos[Ô]
Cem(9) = [Ô]Novecentos[Ô]

Dez(1) = [Ô]Dez[Ô]
Dez(2) = [Ô]Vinte[Ô]
Dez(3) = [Ô]Trinta[Ô]
Dez(4) = [Ô]Quarenta[Ô]
Dez(5) = [Ô]Cinquenta[Ô]
Dez(6) = [Ô]Sessenta[Ô]
Dez(7) = [Ô]Setenta[Ô]
Dez(8) = [Ô]Oitenta[Ô]
Dez(9) = [Ô]Noventa[Ô]
Dez(10) = [Ô][Ô]

Uni(1) = [Ô]Um[Ô]
Uni(2) = [Ô]Dois[Ô]
Uni(3) = [Ô]Tres[Ô]
Uni(4) = [Ô]Quatro[Ô]
Uni(5) = [Ô]Cinco[Ô]
Uni(6) = [Ô]Seis[Ô]
Uni(7) = [Ô]Sete[Ô]
Uni(8) = [Ô]Oito[Ô]
Uni(9) = [Ô]Nove[Ô]
Uni(10) = [Ô]Dez[Ô]
Uni(11) = [Ô]Onze[Ô]
Uni(12) = [Ô]Doze[Ô]
Uni(13) = [Ô]Treze[Ô]
Uni(14) = [Ô]Quatorze[Ô]
Uni(15) = [Ô]Quinze[Ô]
Uni(16) = [Ô]Dezesseis[Ô]
Uni(17) = [Ô]Dezessete[Ô]
Uni(18) = [Ô]Dezoito[Ô]
Uni(19) = [Ô]Dezanove[Ô]

VEExiste = False
VEExtenço = [Ô][Ô]
If VEValor > 100 Then
VEValor2 = Int(VEValor / 100)
VEValor = VEValor - VEValor2 * 100
VEExtenço = Cem(VEValor2)
VEExiste = True
End If
If VEValor = 100 Then
VEExtenço = [Ô]Cem[Ô]
VEExiste = False
End If

If VEValor > 19 Then
VEValor2 = Int(VEValor / 10)
VEValor = VEValor - VEValor2 * 10
If VEExiste Then VEExtenço = VEExtenço & [Ô] e [Ô]
VEExtenço = VEExtenço & Dez(VEValor2)
VEExiste = True
End If
If VEValor < 20 And VEValor >= 0 Then
If VEExiste And VEValor > 0 Then VEExtenço = VEExtenço & [Ô] e [Ô]
If VEValor > 0 Then VEExtenço = VEExtenço & Uni(VEValor)
End If
VECentenas = VEExtenço

End Function

Public Function ValoresExtenço(Valor As Currency, NomeMoeda As String, CasasDécimais As Byte) As String

Dim Centavo As Currency
Dim Milhão As Currency
Dim Milhar As Currency
Dim Unidade As Currency
Dim Existe As Boolean
Dim Extenço As String
Dim CD(0 To 6) As Long

CD(0) = 0
CD(1) = 10
CD(2) = 100
CD(3) = 1000
CD(4) = 10000
CD(5) = 100000
CD(6) = 1000000

If Valor = 0 Then
ValoresExtenço = [Ô]Zero [Ô] & NomeMoeda
Exit Function
End If

Valor = Abs(Valor)

[ô]Centavo = Int((Valor - Fix(Valor)) * 100)
Centavo = (Valor - Fix(Valor)) * CD(CasasDécimais)

Milhão = Int(Valor / 1000000)
Valor = Valor - Milhão * 1000000
Milhar = Int((Valor) / 1000)
Valor = Valor - Milhar * 1000
Unidade = Int(Valor)
Existe = False

If Milhão > 0 Then
If Milhão = 1 Then Extenço = [Ô]Um Milhão [Ô] Else Extenço = VECentenas(Milhão) + [Ô] Milhões [Ô]
Existe = True
End If

If Milhar > 0 Then
If Existe And Unidade = 0 Then Extenço = Extenço & [Ô]e [Ô]
If Milhar = 1 Then
Extenço = Extenço & [Ô]Mil [Ô]
ElseIf Milhar > 1 Then
Extenço = Extenço & VECentenas(Milhar) & [Ô] Mil [Ô]
End If
Existe = True
End If

If Unidade > 0 Then
If Existe And Int(Unidade / 100) = Unidade / 100 Then Extenço = Extenço & [Ô]e [Ô]
Extenço = Extenço & VECentenas(Unidade) & [Ô] [Ô]
End If
If Extenço = [Ô]Um Milhão[Ô] Then Extenço = Extenço & [Ô]de[Ô]
Extenço = Trim(Extenço) & [Ô] [Ô] & NomeMoeda
If Centavo > 0 Then
Extenço = Extenço & [Ô] e [Ô] & VECentenas(Centavo) + [Ô] Centavos.[Ô]
Else
Extenço = Extenço & [Ô].[Ô]
End If
ValoresExtenço = Extenço

End Function[/txt-color]




MARCOSLING 09/01/2011 21:18:47
#361695
Então,

não há tratamento para a moeda, fica sempre fixo.

Ex:
um real, um milhão de reais

e tem um outro problema quando o valor fica abaixo de 1 real. Ex.: 0,50
Tópico encerrado , respostas não são mais permitidas