Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ivitor

[Resolvido] Escrever por extenso

Recommended Posts

Caros Companheiros,

alguém aí sabe se existe alguma forma de pegar um número qualquer como R$ 1.537,00 e escrever por extenso.

 

Muito obrigado e desde já fico no aguardo de uma resposta.

Ivan Vitor

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alguem no mundo deve ter criado uma DLL pra isso, talvez no GoogleNa escola aposto que muitos fizeram esse tipo de exercicioFlows

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aí pessoal o código é o abaixo e o site é www.linhadecodigo.com.br

Escrever um número por extenso Public Function unidades(numero As String) As String'FAZ PARTE DA FUNCAO QUE ESCREVE UM NUMERO POR EXTENSO  unidades = unidade(numero)End FunctionPublic Function dezenas(numero As String) As String'FAZ PARTE DA FUNCAO QUE ESCREVE UM NUMERO POR EXTENSO  If numero > 9 And numero < 21 Then      dezenas = dezena(numero - 10)  ElseIf numero >= 21 And numero <= 99 Then      If Right(numero, 1) = "0" Then        dezenas = dezena(Int(Left(numero, 1) + 8))      Else        dezenas = dezena(Int(1 & Int(Left(numero, 1) - 2))) & " e " & unidade(Int(Right(numero, 1)))      End If  End IfEnd FunctionPublic Function centenas(numero As String) As String'FAZ PARTE DA FUNCAO QUE ESCREVE UM NUMERO POR EXTENSO  If Mid(numero, 2, 2) = 0 Then      If numero = 100 Then        centenas = "cem"      Else        centenas = centena(Left(numero, 1))      End If  ElseIf Mid(numero, 3, 1) = 0 Then      centenas = centena(Left(numero, 1)) & " e " & dezenas(Mid(numero, 2, 2))  ElseIf Mid(numero, 2, 1) = 0 Then      centenas = centena(Int(Left(numero, 1))) & " e " & unidade(Int(Right(numero, 1)))  Else      centenas = centena(Int(Left(numero, 1))) & " e " & dezenas(Int(Right(numero, 2)))  End IfEnd FunctionPublic Function ext(numero As Currency) As String'FUNCAO QUE ESCREVE UM NUMERO POR EXTENSO  If numero > 999999.99 Then ext = "Número fora dos padrões válidos !": Exit Function      unidade(0) = "zero"      unidade(1) = "um"      unidade(2) = "dois"      unidade(3) = "três"      unidade(4) = "quatro"      unidade(5) = "cinco"      unidade(6) = "seis"      unidade(7) = "sete"      unidade(8) = "oito"      unidade(9) = "nove"      dezena(0) = "dez"      dezena(1) = "onze"      dezena(2) = "doze"      dezena(3) = "treze"      dezena(4) = "quatorze"      dezena(5) = "quinze"      dezena(6) = "dezesseis"      dezena(7) = "dezessete"      dezena(8) = "dezoito"      dezena(9) = "dezenove"      dezena(10) = "vinte"      dezena(11) = "trinta"      dezena(12) = "quarenta"      dezena(13) = "cinquenta"      dezena(14) = "sessenta"      dezena(15) = "setenta"      dezena(16) = "oitenta"      dezena(17) = "noventa"      centena(1) = "cento"      centena(2) = "duzentos"      centena(3) = "trezentos"      centena(4) = "quatrocentos"      centena(5) = "quinhentos"      centena(6) = "seiscentos"      centena(7) = "setecentos"      centena(8) = "oitocentos"      centena(9) = "novecentos"      inteiro = Int(numero)      'aqui eu vou verificar se o inteiro é zero e então não vou tratar os inteiros só os centavos      If inteiro <> 0 Then        tamanho = Len(inteiro)      Else        tamanho = 0      End If      Select Case tamanho        Case 1            ext = unidades(inteiro)        Case 2            ext = dezenas(inteiro)        Case 3            ext = centenas(inteiro)        Case 4            If Right(inteiro, 3) = 0 Then              ext = unidades(Left(inteiro, 1)) & " mil"            Else              If Int(Right(inteiro, 3)) > 99 Then                  ext = unidades(Left(inteiro, 1)) & " mil e " & centenas(Int(Right(inteiro, 3)))              ElseIf Int(Right(inteiro, 3)) > 9 And Int(Right(inteiro, 3)) < 100 Then                  ext = unidades(Left(inteiro, 1)) & " mil e " & dezenas(Int(Right(inteiro, 3)))              ElseIf Int(Right(inteiro, 3)) < 10 Then                  ext = unidades(Left(inteiro, 1)) & " mil e " & unidades(Int(Right(inteiro, 3)))              End If            End If        Case 5            If Right(inteiro, 3) = 0 Then              ext = dezenas(Left(inteiro, 2)) & " mil "            Else              If Int(Right(inteiro, 3)) > 99 Then                  ext = dezenas(Left(inteiro, 2)) & " mil e " & centenas(Right(inteiro, 3))              ElseIf Int(Right(inteiro, 3)) > 9 And Int(Right(inteiro, 3)) < 100 Then                  ext = dezenas(Left(inteiro, 2)) & " mil e " & dezenas(Int(Right(inteiro, 3)))              ElseIf Int(Right(inteiro, 3)) < 10 Then                  ext = dezenas(Left(inteiro, 2)) & " mil e " & unidades(Int(Right(inteiro, 3)))              End If            End If        Case 6            If Right(inteiro, 3) = 0 Then              ext = centenas(Left(inteiro, 3)) & " mil "            ElseIf Int(Right(inteiro, 3)) > 99 Then              ext = centenas(Left(inteiro, 3)) & " mil e " & centenas(Int(Right(inteiro, 3)))            ElseIf Int(Right(inteiro, 3)) > 9 And Int(Right(inteiro, 3)) < 100 Then              ext = centenas(Left(inteiro, 3)) & " mil e " & dezenas(Int(Right(inteiro, 3)))            ElseIf Int(Right(inteiro, 3)) < 10 Then              ext = centenas(Left(inteiro, 3)) & " mil e " & unidades(Int(Right(inteiro, 3)))            End If      End Select      If ext <> "" Then        If ext = "um" Then          ext = ext & " real"        Else          ext = ext & " reais"        End If      End If      If numero - Int(numero) <> 0 Then        Dim fra As String        fra = Right(numero, 2)        'verificando se o inteiro é zero        If Int(numero) <> 0 Then            If InStr(1, fra, ",") <> 0 Then fra = Right(fra, 1) * 10            If fra >= 10 Then              ext = ext & " e " & dezenas(fra) & " centavos"            ElseIf fra < 10 Then              ext = ext & " e " & unidades(fra) & " centavos"            End If        Else            'aqui eu tiro o "e", pq só é para os centavos            If InStr(1, fra, ",") <> 0 Then fra = Right(fra, 1) * 10            If fra >= 10 Then              ext = ext & dezenas(fra) & " centavos"            ElseIf fra < 10 Then              ext = ext & unidades(fra) & " centavos"            End If        End If      End IfEnd FunctionA chamada: ext(txt_valor.value)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.