Windows Forms - Formatação
Se você programa sabe que ao exibir um campo, por exemplo, tipo moeda, o separador de milhares
e o de casa decimal em português ajuda muito na visualização do valor.
Contudo quando vamos armazenar esse valor no banco de dados temos que eliminar essa formatação
em português, formatar no padrão inglês etc. Este módulo faz essas funções.
Module Formatacao
Convertendo Moeda do Padrão US para o BR
''' <summary>
''' Formatação de dinheiro do formato br para o us ( p/ salvar no bd )
''' </summary>
''' <param name="valor"></param>
''' <returns></returns>
Public Function Formata_Dinheiro(ByVal valor As String)
'converte o dinheiro do format br para o ingles
Dim a As String
'verificando se o valor já esta em ingles
If valor.IndexOf(".") >= 0 And valor.IndexOf(",") < 0 Then
Return valor
End If
a = valor
a = a.Replace(".", "")
a = a.Replace(",", ".")
Return a
End Function
Função para eliminar a Formatação de um CPF ou CNPJ
Public Function Limpa_CPF_CNPJ(ByVal documento As String) As String
Dim a As String
a = documento
a = Replace(a, ".", "")
a = Replace(a, ",", "")
a = Replace(a, "-", "")
a = Replace(a, "/", "")
a = Replace(a, "\", "")
a = Replace(a, " ", "")
Limpa_CPF_CNPJ = a
End Function
Função que converte um string numérico na formatação de um CNPJ ou CPF
Public Function Formata_CPF_CNPJ(ByVal documento As String) As String
'recebe o num doc e retorna ele sem formato, apenas numeros
Dim a As String
Dim b As String
Dim c As Boolean = False
'COM DIGITOS VERIFICADORES---------------------------------------------------
' formato padrão de CNPJ :
' formatado : 18 caracteres - 14 caracteres numéricos + 4 separadores
' não formatado : 14 caracteres numéricos
' Formatado sem formato
' 00.001.713/0001-70 00001713000170
' 67.839.993/0001-60 67839993000160
' 97.418.735/0004-14 97418735000414
' tam=18 tam=14
' formato padrão de CPF :
' formatado : 14 caracteres - 11 caracteres numéricos + 3 separadores
' não formatado : 11 caracteres numéricos
' Formatado sem formato
' 968.608.638-20 96860863820
' tam=14 tam=11
'SEM DIGITOS VERIFICADORES---------------------------------------------------
' formato padrão de CNPJ :
' formatado : 15 caracteres - 12 caractetes numéricos + 3 separadores
' não formatado : 12 caracteres numéricos
' Formatado sem formato
' 00.001.713/0001 000017130001
' 67.839.993/0001 678399930001
' 97.418.735/0004 974187350004
' tam=15 tam=12
' formato padrão de CPF :
' formatado : 11 caracteres - 9 caracteres numéricos + 2 separadores
' não formatado : 9 caracteres numéricos
' Formatado sem formato
' 968.608.638 968608638
' tam=11 tam=9
a = documento
a = limpa(a) 'CNPJ+DV=14, CPF+DV=11
' formatos inválidos
If Trim(a) = "" Then
MsgBox("Não foi recebido nenhum número", vbCritical, "Function Formata_CPF_CNPJ")
Formata_CPF_CNPJ = ""
Exit Function
End If
' CGC/CNPJ com digitos verificadores - sem formatação - padrão
If E_CNPJ(a) Then
If Len(a) = 18 Then
Return a
Exit Function
Else
If Len(a) = 14 Then
b = Strings.Left(a, 2) + "."
b = b + Mid$(a, 3, 3) + "."
b = b + Mid$(a, 6, 3) + "/"
b = b + Mid$(a, 9, 4) + "-"
b = b + Right$(a, 2)
Formata_CPF_CNPJ = b
Return b
Exit Function
MsgBox("É um CNPJ/CGC mas não sei o formato correto", vbCritical, "Function Formata_CPF_CNPJ")
End If
End If
End If
' cpf com digitos verificadores sem formatação
If E_CPF(a) Then
If Len(a) = 14 Then
b = Mid(a, 4, 3) + "."
b = b + Mid$(a, 7, 3) + "."
b = b + Mid$(a, 10, 3) + "-"
b = b + Right$(a, 2)
Formata_CPF_CNPJ = b
Exit Function
Else
If Len(a) = 11 Then
b = Mid(a, 4, 3) + "."
b = b + Mid$(a, 7, 3) + "."
b = b + Mid$(a, 10, 3) + "-"
b = b + Right$(a, 2)
Formata_CPF_CNPJ = b
Exit Function
End If
End If
End If
'cnpj sem formatação e sem os digitos de verificação - para ser um cnpj tem que ter o 0001/2/3/4
'Formatado corretamente = 00.001.713/0001-70(18), sem separadores : 00001713000170(14), sem DVs :000017130001(12)
'formatando : 00.001.713/0001
If (Len(a) = 12) And
((Left(a, 4) = "0001") Or
(Left(a, 4) = "0002") Or
(Left(a, 4) = "0003") Or
(Left(a, 4) = "0004")) Then
b = Strings.Left(a, 2) + "."
b = b + Mid$(a, 3, 3) + "."
b = b + Mid$(a, 6, 3) + "/"
'b = b + Mid$(a, 9, 4) + "-" não tem
'b = b + Right$(a, 2) não tem
Formata_CPF_CNPJ = b
Exit Function
End If
' cpf sem formatação
If (Len(a) = 11) Then 'cpf sem formatação
If (InStr(a, "/") = 0) And (InStr(a, ".") = 0) Then
b = Strings.Left(a, 3) + "."
b = b + Mid$(a, 4, 3) + "."
b = b + Mid$(a, 7, 3) + "-"
b = b + Right$(a, 2)
Formata_CPF_CNPJ = b
Exit Function
End If
End If
MsgBox("O dado recebido não CPF nem CNPJ : " + CStr(a), vbCritical, "Function Formata_CPF_CNPJ")
Return "-1"
End Function
Formatando a apresentação de números
Formatando um string no formato Moeda de acordo com o idioma do Sistema
Public Function FormataMoeda(valor As String) As String
Return Val(valor).ToString("C")
End Function
Formatando um string no formato Decimal de acordo com o idioma do Sistema
Public Function FormataDecimal(valor As String) As String
Dim a As Integer
a = Val(valor)
Return a.ToString("D")
End Function
Public Function FormataExponencial(valor As String) As String
Return Val(valor).ToString("E")
End Function
Formatando um string no formato Ponto fixo de acordo com o idioma do Sistema
Public Function FormataPontoFixo(valor As String) As String
Return Val(valor).ToString("F")
End Function
Formatando um string no formato Geral de acordo com o idioma do Sistema
Public Function FormataGeral(valor As String) As String
Return Val(valor).ToString("G")
End Function
Formatando um string no formato Numérico de acordo com o idioma do Sistema
Public Function FormataNumero(valor As String) As String
Return Val(valor).ToString("N")
End Function
Formatando um string no formato Numérico Porcentagem de acordo com o idioma do Sistema
Public Function FormataPorcentagem(valor As String) As String
Return Val(valor).ToString("P")
End Function
Formatando um string no formato Retorno de acordo com o idioma do Sistema
Public Function FormataIdaEVolta(valor As String) As String
'Resultado: Uma cadeia de caracteres que pode ir e voltar para um número idêntico.
Return Val(valor).ToString("R")
End Function
Formatando um string no formato Hexadecimal de acordo com o idioma do Sistema
Public Function FormataHexadecimal(valor As String) As String
Dim a As Integer
a = Val(valor)
Return a.ToString("X")
End Function
Formatando um string no formato Especial de acordo com o que desejamos
Public Function FormataEspecial(valor As String) As String
Return Val(valor).ToString("$#,###.00")
'0=zeros não significativos
'#=um dígito numérico qualquer
'.=ponto decimal
',=separador de milhares
'%=simbolo de porcentagem
'E+0, E-0, e+0, e-0 = notação de expoente
'\=caractere literal como \n
'""=literal string
';=separador de seção
End Function
End Module