Ir ao conteúdo

Posts recomendados

Postado

Olá @fabio rodrigues, só consegui ver a macro de escrever o valor por extenso, tenho essa em Basic:

 

' Por Extenso	Function NExtenso(byval dValor as double) as string  
'https://wiki.documentfoundation.org/Extensions/Projects/NumExtenso/pt-br
'desenvolvida por: Noelson Alves Duarte e Gustavo Buzzatti Pacheco
'O############################################################################O
Function NExtenso(byval dValor as double) as string
'O############################################################################O
nextenso=extenso(dvalor,"reais", "real")
End function

Function Extenso(ByVal Valor As Double, ByVal MoedaPlural As String, ByVal MoedaSingular As String) As String
Dim StrValor As String, Negativo As Boolean
Dim Buf As String, Parcial As Integer
Dim Temp as string
Dim Posicao As Integer, Unidades
Dim Dezenas, Centenas, PotenciasSingular
Dim PotenciasPlural
Negativo = (Valor < 0)
Valor = Abs((Valor))
If Valor Then
Unidades = Array(vbNullString, "um", "dois", "três", "quatro", "cinco", "seis", "sete", "oito", "nove", "dez", "onze", "doze", "treze", "quatorze", "quinze", "dezesseis", "dezessete", "dezoito", "dezenove")
Dezenas = Array(vbNullString, vbNullString, "vinte", "trinta", "quarenta", "cinquenta", "sessenta", "setenta", "oitenta", "noventa")
Centenas = Array(vbNullString, "cento", "duzentos", "trezentos", "quatrocentos", "quinhentos", "seiscentos", "setecentos", "oitocentos", "novecentos")
PotenciasSingular = Array(vbNullString, " mil", " milhão", " bilhão", " trilhão", " quatrilhão")
PotenciasPlural = Array(vbNullString, " mil", " milhões", " bilhões", " trilhões", " quatrilhões")
StrValor = Left(Format(Valor, String(18, "0") & ".000"), 18)
For Posicao = 1 To 18 Step 3
Parcial = Val(Mid(StrValor, Posicao, 3))
If Parcial Then
If Parcial = 1 Then
Buf = "um" & PotenciasSingular((18 - Posicao) \ 3)
ElseIf Parcial = 100 Then
Buf = "cem" & PotenciasSingular((18 - Posicao) \ 3)
Else
Buf = Centenas(Parcial \ 100)
Parcial = Parcial Mod 100
If Parcial <> 0 And Buf <> vbNullString Then
Buf = Buf & " e "
End If
If Parcial < 20 Then
Buf = Buf & Unidades(Parcial)
Else
Buf = Buf & Dezenas(Parcial \ 10)
Parcial = Parcial Mod 10
If Parcial <> 0 And Buf <> vbNullString Then
Buf = Buf & " e "
End If
Buf = Buf & Unidades(Parcial)
End If
Buf = Buf & PotenciasPlural((18 - Posicao) \ 3)
End If
If Buf <> vbNullString Then
If Temp <> vbNullString Then
Parcial = Val(Mid(StrValor, Posicao, 3))
If Posicao = 16 And (Parcial < 100 Or _
(Parcial Mod 100) = 0) Then
Temp = Temp & " e "
Else
Temp = Temp & ", "
End If
End If
Temp = Temp & Buf
End If
End If
Next
If Temp <> vbNullString Then
If Negativo Then
Temp = "menos " & Temp
End If
If Int(Valor) = 1 Then
Temp = Temp & " " & MoedaSingular
Else
Temp = Temp & " " & MoedaPlural
End If
End If
Parcial = Int((Valor - Int(Valor)) * 100 + 0.1)
If Parcial Then
Buf = ExtensoCentavos(Parcial, "centavos", "centavo")
If Temp <> vbNullString Then
Temp = Temp & " e "
End If
Temp = Temp & Buf
End If
End If
Extenso = Temp
End Function

Function ExtensoCentavos(ByVal Valor As Double, ByVal MoedaPlural As String, ByVal MoedaSingular As String) As String
Dim StrValor As String, Negativo As Boolean
Dim Buf As String, Parcial As Integer
Dim Temp as string
Dim Posicao As Integer, Unidades
Dim Dezenas, Centenas, PotenciasSingular
Dim PotenciasPlural
Negativo = (Valor < 0)
Valor = Abs((Valor))
If Valor Then
Unidades = Array(vbNullString, "um", "dois", "três", "quatro", "cinco", "seis", "sete", "oito", "nove", "dez", "onze", "doze", "treze", "quatorze", "quinze", "dezesseis", "dezessete", "dezoito", "dezenove")
Dezenas = Array(vbNullString, vbNullString, "vinte", "trinta", "quarenta", "cinquenta", "sessenta", "setenta", "oitenta", "noventa")
Centenas = Array(vbNullString, "cento", "duzentos", "trezentos", "quatrocentos", "quinhentos", "seiscentos", "setecentos", "oitocentos", "novecentos")
PotenciasSingular = Array(vbNullString, " mil", " milhão", " bilhão", " trilhão", " quatrilhão")
PotenciasPlural = Array(vbNullString, " mil", " milhões", " bilhões", " trilhões", " quatrilhões")
StrValor = Left(Format(Valor, String(18, "0") & ".000"), 18)
For Posicao = 1 To 18 Step 3
Parcial = Val(Mid(StrValor, Posicao, 3))
If Parcial Then
If Parcial = 1 Then
Buf = "um" & PotenciasSingular((18 - Posicao) \ 3)
ElseIf Parcial = 100 Then
Buf = "cem" & PotenciasSingular((18 - Posicao) \ 3)
Else
Buf = Centenas(Parcial \ 100)
Parcial = Parcial Mod 100
If Parcial <> 0 And Buf <> vbNullString Then
Buf = Buf & " e "
End If
If Parcial < 20 Then
Buf = Buf & Unidades(Parcial)
Else
Buf = Buf & Dezenas(Parcial \ 10)
Parcial = Parcial Mod 10
If Parcial <> 0 And Buf <> vbNullString Then
Buf = Buf & " e "
End If
Buf = Buf & Unidades(Parcial)
End If
Buf = Buf & PotenciasPlural((18 - Posicao) \ 3)
End If
If Buf <> vbNullString Then
If Temp <> vbNullString Then
Parcial = Val(Mid(StrValor, Posicao, 3))
If Posicao = 16 And (Parcial < 100 Or _
(Parcial Mod 100) = 0) Then
Temp = Temp & " e "
Else
Temp = Temp & ", "
End If
End If
Temp = Temp & Buf
End If
End If
Next
If Temp <> vbNullString Then
If Negativo Then
Temp = "menos " & Temp
End If
If Int(Valor) = 1 Then
Temp = Temp & " " & MoedaSingular
Else
Temp = Temp & " " & MoedaPlural
End If
End If
Parcial = Int((Valor - Int(Valor)) * 100 + 0.1)
If Parcial Then
Buf = Extenso(Parcial, "centavos", "centavo")
If Temp <> vbNullString Then
Temp = Temp & " e "
End If
Temp = Temp & Buf
End If
End If
ExtensoCentavos = Temp
End Function

 

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!