Ir ao conteúdo

VBA Excel Funcao Format


GutoBotta

Posts recomendados

Postado

Ola galera, tudo tranquilo?

Fiz um txt_box no vba. Esse txt pode receber informacao de CPF e CNPF. A ideia e aplicar a formatacao xxx.xxx.xxx-xx para cpf e xx.xxx.xxx/xxxx-xx para CNPJ. Fiz a regra abaixo mas nao ta dando certo.

If txt_cpf <> "" Then

If Len(txt_cpf) = 11 Then 'o total de numeros de cpf sao 11

txt_cpf = Format(txt_cpf, "###.###.###-##")

If Len(txt_cpf) = 14 Then

txt_cpf = Format(txt_cpf, "##.###.###/####-##")

Else

MsgBox "CPF's devem conter 11 digitos. CNPJ's, 14", vbCritical, "Atencao"

Exit Sub

End If

End If

End If

To comecando no VBA e nao sei muita coisa. Se puderem me ajudar.

Valeu!

abraços

Postado

Boa noite!!!

Isso deve te ajudar...

..Fonte http://www.ambienteoffice.com.br/officevba/valicadao_de_cpf_e_cnpj/

Sub Teste()
Debug.Print ValidaçãoCPF("12312312312")
Debug.Print ValidaçãoCNPJ("12312312313592")
End Sub

Function ValidaçãoCNPJ(ByVal sCNPJ As String) As Boolean

Dim sVerificador1 As String
Dim sVerificador2 As String
Dim l As Long
Dim lOffset As Long
Dim lTotal As Long
Dim lResto As Long

'Limpa barras, traços e pontos do CNPJ, caso haja:
sCNPJ = Replace(sCNPJ, ".", vbNullString)
sCNPJ = Replace(sCNPJ, "-", vbNullString)
sCNPJ = Replace(sCNPJ, "/", vbNullString)
sCNPJ = Replace(sCNPJ, " ", vbNullString)

'Verifica se o CNPJ possui 11 caracteres
If Not Len(sCNPJ) = 14 Or Not IsNumeric(sCNPJ) Then Exit Function

'Obtém os dígitos verificadores do CNPJ
sVerificador1 = Mid(sCNPJ, 13, 2)

sCNPJ = Left(sCNPJ, 12)

'Calcula os dígitos verificadores de acordo
'com as regras do Ministério da Fazenda:
'--- Início ---
'O código do laço executará duas vezes
Do Until Len(sCNPJ) = 14
'Rotina para efetuar o cálculo da soma de produtos
lOffset = 2
lTotal = 0
For l = Len(sCNPJ) To 1 Step -1
If lOffset > 9 Then lOffset = 2
lTotal = lTotal + ((Mid(sCNPJ, l, 1)) * lOffset)
lOffset = lOffset + 1
Next l

'Cálculo para obter dígito verificador
l = lTotal Mod 11
l = 11 - l
If l = 10 Or l = 11 Then l = 0

'Concatena o dígito l ao CNPJ
sCNPJ = sCNPJ & CStr(l)
Loop

'Retorna os dígitos verificadores
sVerificador2 = Right(sCNPJ, 2)

'Se comparação entre dígitos verificadores for Verdadeiro,
'então o número do CNPJ é válido:
ValidaçãoCNPJ = (sVerificador1 = sVerificador2)
End Function

Function ValidaçãoCPF(ByVal sCPF As String) As Boolean

Dim sVerificador1 As String
Dim sVerificador2 As String
Dim l As Long
Dim lOffset As Long
Dim lTotal As Long

'Limpa traços e pontos do CPF, caso haja:
sCPF = Replace(sCPF, ".", vbNullString)
sCPF = Replace(sCPF, "-", vbNullString)
sCPF = Replace(sCPF, " ", vbNullString)

'Verifica se o CPF possui 11 caracteres
If Not Len(sCPF) = 11 Or Not IsNumeric(sCPF) Then Exit Function

'Obtém os dígitos verificadores do CPF
sVerificador1 = Right(sCPF, 2)

'Calcula os dígitos verificadores de acordo
'com as regras do Ministério da Fazenda:
'--- Início ---
'O código do laço executará duas vezes
Do Until Len(sCPF) = 11
'Rotina para efetuar o cálculo da soma de produtos
lOffset = 2
lTotal = 0
For l = Len(sCPF) To 1 Step -1
lTotal = lTotal + (Mid(sCPF, l, 1) * lOffset)
lOffset = lOffset + 1
Next l

'Cálculo para obter dígito verificador
l = lTotal Mod 11
l = 11 - l
If l = 10 Or l = 11 Then l = 0

'Concatena o dígito l ao CPF
sCPF = sCPF & CStr(l)
Loop
'Os dígitos verifadores são os dois últimos algarismos
sVerificador2 = Right(sCPF, 2)
'--- Fim ---

'Se comparação entre dígitos verificadores for Verdadeiro,
'então o número do CPF é válido:
ValidaçãoCPF = (sVerificador1 = sVerificador2)
End Function

Postado
Private Sub CommandButton2_Click()
Dim txt_cpf As String
txt_cpf = TextBox1.Text
If Len(txt_cpf) = 11 Then 'o total de numeros de cpf sao 11
TextBox1.Text = Format(txt_cpf, "###"".""###"".""###""-""##")
ElseIf Len(txt_cpf) = 14 Then
TextBox1.Text = Format(txt_cpf, "##"".""###"".""###""/""####""-""##")
Else: MsgBox "CPF's devem conter 11 digitos. CNPJ's, 14", vbCritical, "Atencao"
End If
End Sub

Postado

Olá Osvaldo, muito obrigado pela sua ajuda!

O unico problema agora é que ele nao esta considerando os zeros a esquerda. por exemplo, 00.309.225/0001-30 esta aparecendo .309.225/0001-30.

Abraços

Gustavo

Postado
Private Sub CommandButton2_Click()
Dim txt_cpf As String
txt_cpf = TextBox1.Text
If Len(txt_cpf) = 11 Then 'o total de numeros de cpf sao 11
TextBox1.Text = Format(txt_cpf, "[COLOR="Red"][B]0[/B][/COLOR]##"".""###"".""###""-""##")
ElseIf Len(txt_cpf) = 14 Then
TextBox1.Text = Format(txt_cpf, "[COLOR="Red"][B]0[/B][/COLOR]#"".""###"".""###""/""####""-""##")
Else: MsgBox "CPF's devem conter 11 digitos. CNPJ's, 14", vbCritical, "Atencao"
End If
End Sub

Arquivado

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

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...