Function Extenso_Data(valor As Date) As String Dim strData As String strData = dias(Day(valor)) + " de " + meses(Month(valor)) + " de " + milhares(Year(valor)) Extenso_Data = strData End Function Private Function dias(valor As Double) As String Dim dias_t(31) dias_t(1) = "Primeiro" dias_t(2) = "Dois" dias_t(3) = "Três" dias_t(4) = "Quatro" dias_t(5) = "Cinco" dias_t(6) = "Seis" dias_t(7) = "Sete" dias_t(8) = "Oito" dias_t(9) = "Nove" dias_t(10) = "Dez" dias_t(11) = "Onze" dias_t(12) = "Doze" dias_t(13) = "Treze" dias_t(14) = "Quatorze" dias_t(15) = "Quinze" dias_t(16) = "Dezesseis" dias_t(17) = "Dezessete" dias_t(18) = "Dezoito" dias_t(19) = "Dezenove" dias_t(20) = "Vinte" dias_t(21) = "Vinte e um" dias_t(22) = "Vinte e dois" dias_t(23) = "Vinte e três" dias_t(24) = "Vinte e quatro" dias_t(25) = "Vinte e cinco" dias_t(26) = "Vinte e seis" dias_t(27) = "Vinte e sete" dias_t(28) = "Vinte e oito" dias_t(29) = "Vinte e nove" dias_t(30) = "Trinta" dias_t(31) = "Trinta e um" dias = dias_t(valor) End Function Private Function meses(valor As Double) As String Dim mes_t(12) mes_t(1) = "Janeiro" mes_t(2) = "Fevereiro" mes_t(3) = "Março" mes_t(4) = "Abril" mes_t(5) = "Maio" mes_t(6) = "Junho" mes_t(7) = "Julho" mes_t(8) = "Agosto" mes_t(9) = "Setembro" mes_t(10) = "Outubro" mes_t(11) = "Novembro" mes_t(12) = "Dezembro" meses = mes_t(valor) End Function Private Function unidades(unidade As Double) As String Dim unid(9) ' Define as unidades a serem usadas unid(1) = "Um": unid(6) = "Seis" unid(2) = "Dois": unid(7) = "Sete" unid(3) = "Três": unid(8) = "Oito" unid(4) = "Quatro": unid(9) = "Nove" unid(5) = "Cinco" ' Retorna a string referente a unidade passada para ' esta funcao unidades = Trim(unid(unidade)) End Function Private Function dezenas(dezena As Double) As String Dim dezes(9) Dim dez(9) Dim intDezena As Double Dim intUnidade As Double Dim tmpStr As String ' Define as dezenas a serem utilizadas dezes(1) = "Onze": dezes(6) = "Dezesseis" dezes(2) = "Doze": dezes(7) = "Dezessete" dezes(3) = "Treze": dezes(8) = "Dezoito" dezes(4) = "Quatorze": dezes(9) = "Dezenove" dezes(5) = "Quinze" dez(1) = "Dez": dez(6) = "Sessenta" dez(2) = "Vinte": dez(7) = "Setenta" dez(3) = "Trinta": dez(8) = "Oitenta" dez(4) = "Quarenta": dez(9) = "Noventa" dez(5) = "Cinqüenta" ' Calcula o inteiro da dezena intDezena = Int(dezena / 10) ' Calcula o inteiro da unidade intUnidade = dezena Mod 10 ' Se o inteiro da dezena for zero If intDezena = 0 Then ' dezenas sao iguais as unidades dezenas = unidades(intUnidade) Exit Function Else: ' caso contrário, é igual a dez dezenas = dez(intDezena) End If ' Se o inteiro da dezena for igual a 1 e ' o inteiro da unidade for zero, os valores estao ' entre 11 e 19 If (intDezena = 1 And intUnidade > 0) Then dezenas = dezes(intUnidade) Else ' Caso contrário, valor está entre 20 e 90 inclusive If (intDezena > 1 And intUnidade > 0) Then ' Concatena a string da dezena com a string da unidade dezenas = dezenas & " e " & unidades(intUnidade) End If End If dezenas = dezenas End Function Private Function centenas(centena As Double) As String Dim tmpCento As Double Dim tmpDez As Double Dim tmpUni As Double Dim tmpUniMod As Double Dim tmpModDez As Double Dim centoString As String Dim cento(9) ' Define as centenas cento(1) = "Cento": cento(6) = "Seiscentos" cento(2) = "Duzentos": cento(7) = "Setecentos" cento(3) = "Trezentos": cento(8) = "Oitocentos" cento(4) = "Quatrocentos": cento(9) = "Novecentos" cento(5) = "Quinhentos" ' Calcula o inteiro da centena tmpCento = Int(centena / 100) ' Calcula a parte da dezena tmpDez = centena - (tmpCento * 100) ' Calcula o inteiro da unidade tmpUni = Int(tmpDez / 10) ' Calcula o resto da unidade tmpUniMod = tmpUni Mod 10 ' Calcula o resto da dezena tmpModDez = tmpDez Mod 10 ' Se centena for cem, definir string como "cem " e sair If centena = 100 Then centoString = "cem " Else ' Caso contrário definir a string da centena centoString = cento(tmpCento) End If ' Avalia se a unidade é maior ou igual a zero, se o resto da unidade é igual ou ' maior que zero, se a dezena é maior ou igual a um e se a centena é igual ou ' maior que 1. Se forem verdadeiros; entao, adicionar " e " a string da centena If (tmpUni >= 0 And tmpUniMod >= 0 And tmpDez >= 1 And tmpCento >= 1) Then centoString = centoString & " e " End If ' Concatena a string do cento com a string da dezena centenas = Trim(centoString & dezenas(tmpDez)) End Function Private Function milhares(milhar As Double) As String Dim tmpMilhar As Double Dim tmpCento As Double Dim milString As String ' Calcula o inteiro da milhar tmpMilhar = Int(milhar / 1000) ' Calcula o cento dentro da milhar tmpCento = milhar - (tmpMilhar * 1000) ' Se milhar for zero, entao a string da milhar fica em branco If tmpMilhar = 0 Then milString = "" ' Se for igual a 1, entao ' If '(tmpMilhar = 1) Then ' string da milhar é igual a unidade e "mil" 'milString = unidades(tmpMilhar) & "um mil " ' se maior que 1 e menor que dez, string igual a unidades If (tmpMilhar >= 1 And tmpMilhar < 10) Then milString = unidades(tmpMilhar) & " mil " ' Se for entre 10 e 100, entao string igual a dezenas ElseIf (tmpMilhar >= 10 And tmpMilhar < 100) Then milString = dezenas(tmpMilhar) & " mil " ' Se for entre 100 e 1000, entao igual string centenas ElseIf (tmpMilhar >= 100 And tmpMilhar < 1000) Then milString = centenas(tmpMilhar) & " mil " End If 'If tmpCento = 1 Then milString = " e " If (tmpCento >= 1 And tmpCento <= 100) Then milString = milString & "e " milhares = Trim(milString & centenas(tmpCento)) End Function