MASKARA CNPJ

ARNALDOCRUZ 15/10/2010 20:13:12
#355199
Boa noite

colegas usando o componente maskedTextbox

mascara com CNPJ.

ao digitar o numero do cnpj tudo blz, ai vou pra verificação do CNPJ.

quando ocorre do CNPJ ser incorreto eu limpo o CNPJ

quando começo a digitar no primeiro digito tipo eu digito 1 e depois o 9 a mascara fica assim _9. o numero um some.

CAJOSE 16/10/2010 09:50:28
#355218
[ô]Em um Modulo.bas

Public Formato, Numeros As String

Function Fu_consistir_CgcCpf(Vl_CgcCpf As String)
[ô] Esta Rotina Devolverá True Se o Cgc/Cpf Informado For valido
[ô] ou False Se o Cgc/Cpf Não For Correto

Fu_consistir_CgcCpf = False
Dim VA_CgcCpf As String
Dim VA_Digito As String
Static Numero(15) As Integer
Dim VA_Resto As Integer
Dim VA_Resultado As Integer
Dim VA_SomaDigito10 As Integer
Dim VA_resto1 As Integer

VA_CgcCpf = Format(SóNumeros(Vl_CgcCpf), [Ô]@@@@@@@@@@@@@@[Ô])
VA_Digito = Mid(VA_CgcCpf, 13, 2)
[ô]frmCritica_CPCCGC.LblVerificador.Caption = VA_Digito

Numero(1) = Val(Mid(VA_CgcCpf, 1, 1))
Numero(2) = Val(Mid(VA_CgcCpf, 2, 1))
Numero(3) = Val(Mid(VA_CgcCpf, 3, 1))
Numero(4) = Val(Mid(VA_CgcCpf, 4, 1))
Numero(5) = Val(Mid(VA_CgcCpf, 5, 1))
Numero(6) = Val(Mid(VA_CgcCpf, 6, 1))
Numero(7) = Val(Mid(VA_CgcCpf, 7, 1))
Numero(8) = Val(Mid(VA_CgcCpf, 8, 1))
Numero(9) = Val(Mid(VA_CgcCpf, 9, 1))
Numero(10) = Val(Mid(VA_CgcCpf, 10, 1))
Numero(11) = Val(Mid(VA_CgcCpf, 11, 1))
Numero(12) = Val(Mid(VA_CgcCpf, 12, 1))
Numero(13) = Val(Mid(VA_CgcCpf, 13, 1))
Numero(14) = Val(Mid(VA_CgcCpf, 14, 1))

If Len(Trim(VA_CgcCpf)) > 11 Then [ô] Cgc
Formato = Format(Numeros, [Ô]@@.@@@.@@@/@@@@-@@[Ô])


VA_Resultado = (Numero(1) * 5) + (Numero(2) * 4) _
+ (Numero(3) * 3) + (Numero(4) * 2) _
+ (Numero(5) * 9) + (Numero(6) * 8) + _
(Numero(7) * 7) + (Numero(8) * 6) + _
(Numero(9) * 5) + (Numero(10) * 4) + _
(Numero(11) * 3) + (Numero(12) * 2)
[ô] Atribui para resto o resto da divisão
[ô] de VA_resultado dividido por 11
VA_Resto = VA_Resultado Mod 11
If VA_Resto < 2 Then
VA_resto1 = 0
Else
VA_resto1 = 11 - VA_Resto
End If
If VA_resto1 <> Numero(13) Then
Exit Function
End If
VA_Resultado = (Numero(1) * 6) + _
(Numero(2) * 5) + (Numero(3) * 4) + _
(Numero(4) * 3) + (Numero(5) * 2) + _
(Numero(6) * 9) + (Numero(7) * 8) + _
(Numero(8) * 7) + (Numero(9) * 6) + _
(Numero(10) * 5) + (Numero(11) * 4) + _
(Numero(12) * 3) + (Numero(13) * 2)
[ô] Atribui para resto o resto da divisão
[ô] de VA_resultado dividido por 11
VA_Resto = VA_Resultado Mod 11
If VA_Resto < 2 Then
VA_resto1 = 0
Else
VA_resto1 = 11 - VA_Resto
End If
If VA_resto1 <> Numero(14) Then
Exit Function
End If
Else [ô] Cpf
Formato = Format(Numeros, [Ô]@@@.@@@.@@@ - @@[Ô])
VA_Resultado = (Numero(4) * 1) + (Numero(5) * 2) _
+ (Numero(6) * 3) + (Numero(7) * 4) _
+ (Numero(8) * 5) + (Numero(9) * 6) _
+ (Numero(10) * 7) + (Numero(11) * 8) + (Numero(12) * 9)
VA_Resto = VA_Resultado Mod 11

If VA_Resto > 9 Then
VA_resto1 = VA_Resto - 10
Else
VA_resto1 = VA_Resto
End If
[ô]frmCritica_CPCCGC.LblC1.Caption = VA_resto1
If VA_resto1 <> Numero(13) Then
GoTo Sairr
End If

VA_Resultado = (Numero(5) * 1) _
+ (Numero(6) * 2) + (Numero(7) * 3) _
+ (Numero(8) * 4) + (Numero(9) * 5) + _
(Numero(10) * 6) + (Numero(11) * 7) + _
(Numero(12) * 8) + (VA_resto1 * 9)
VA_Resto = VA_Resultado Mod 11
If VA_Resto > 9 Then
VA_resto1 = VA_Resto - 10
Else
VA_resto1 = VA_Resto
End If
[ô]frmCritica_CPCCGC.LblC2.Caption = VA_resto1
If VA_resto1 <> Numero(14) Then
Exit Function
End If

End If

Fu_consistir_CgcCpf = True
Exit Function
Sairr:
VA_Resultado = (Numero(5) * 1) _
+ (Numero(6) * 2) + (Numero(7) * 3) _
+ (Numero(8) * 4) + (Numero(9) * 5) + _
(Numero(10) * 6) + (Numero(11) * 7) + _
(Numero(12) * 8) + (VA_resto1 * 9)
VA_Resto = VA_Resultado Mod 11
If VA_Resto > 9 Then
VA_resto1 = VA_Resto - 10
Else
VA_resto1 = VA_Resto
End If
[ô]frmCritica_CPCCGC.LblC2.Caption = VA_resto1
If VA_resto1 <> Numero(14) Then
Exit Function
End If

End Function
Function SóNumeros(x As String) As String
On Error Resume Next
Dim temp As String
Dim j As Integer
temp = [Ô][Ô]
For j = 1 To Len(x)
If Mid(x, j, 1) = [Ô]0[Ô] Or _
Mid(x, j, 1) = [Ô]1[Ô] Or _
Mid(x, j, 1) = [Ô]2[Ô] Or _
Mid(x, j, 1) = [Ô]3[Ô] Or _
Mid(x, j, 1) = [Ô]4[Ô] Or _
Mid(x, j, 1) = [Ô]5[Ô] Or _
Mid(x, j, 1) = [Ô]6[Ô] Or _
Mid(x, j, 1) = [Ô]7[Ô] Or _
Mid(x, j, 1) = [Ô]8[Ô] Or _
Mid(x, j, 1) = [Ô]9[Ô] Then

temp = temp + Mid(x, j, 1)
End If
Next
Numeros = temp
SóNumeros = temp
End Function
[ô]Para Chamar a Funcao !
[ô]If Fu_consistir_CgcCpf(MskCPF) = False Then
[ô] MsgBox [Ô]Cpf Informado não é valido[Ô], 64
[ô] TxtCPF.SetFocus
[ô] Exit Sub
[ô]Else
[ô] MskCPF.Text = Formato
[ô]End If
[ô]End Sub

[ô]Utilizo em meus sistemas essa rotina e funciona muito bem :)
[ô]Até Mais

Tópico encerrado , respostas não são mais permitidas