| Mauricio Junior |
Dúvida iniciada: 11/25/2005 11:58:06 AM
escrevendo por extenso
Dúvida: 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 Function
Public 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 If
End Function
Public 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 If
End Function
Public 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 If
End Function
A chamada: ext(txt_valor.value)
|