TRATAR CPF
Olá, estou tentando tratar o cpf no projeto do meu TCC, mas estou com um probleminha na hora de rodar a classe, abaixo segue o meu código
Public Class Form1
Private Sub formatacpf(ByVal txtCPF As Object)
txtCPF.MaxLength = 14
If Len(txtCPF.Text) = 3 Then
txtCPF.Text = txtCPF.Text & [Ô].[Ô]
txtCPF.SelectionStart = Len(txtCPF.Text) + 1
ElseIf Len(txtCPF.Text) = 7 Then
txtCPF.Text = txtCPF.Text & [Ô].[Ô]
txtCPF.SelectionStart = Len(txtCPF.Text) + 1
ElseIf Len(txtCPF.Text) = 11 Then
txtCPF.Text = txtCPF.Text & [Ô]-[Ô]
txtCPF.SelectionStart = Len(txtCPF.Text) + 1
End If
End Sub
Private Sub txtCPF_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtCPF.KeyPress
If IsNumeric(e.KeyChar) AndAlso txtCPF.TextLength < txtCPF.MaxLength Then
txtCPF.Text &= e.KeyChar
txtCPF.SelectionStart = txtCPF.TextLength
Call formatacpf(txtCPF)
End If
e.Handled = True
End Sub
Private Sub btnValidarCPF_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnValidarCPF.Click
Dim confcpf As New Valida_CNPJ_CPF
If txtCPF.Text = [Ô][Ô] Then
MsgBox([Ô]CPF Inválido[Ô])
txtCPF.Focus()
End If
[ô]CPF = CPF.ToString.Trim
If confcpf.isCpfValido() Then
MsgBox([Ô]CPF valido[Ô])
Else
MsgBox([Ô]CPF Inválido[Ô])
txtCPF.Clear()
End If
End Sub
End Class
Public Class Valida_CNPJ_CPF
Private dadosArray() As String = {[Ô]000.000.000-00[Ô], [Ô]111.111.111-11[Ô], [Ô]222.222.222-22[Ô], [Ô]333.333.333-33[Ô], [Ô]444.444.444-44[Ô], [Ô]555.555.555-55[Ô], [Ô]666.666.666-66[Ô], [Ô]777.777.777-77[Ô], [Ô]888.888.888-88[Ô], [Ô]999.999.999-99[Ô]}
Private Const msgErro As String = [Ô]Dados Inválidos[Ô]
Private bValida As Boolean
Private sCPF As String
Private sCNPJ As String
Public Property cpf() As String
Get
Return sCPF
End Get
Set(ByVal Valor As String)
bValida = ValidaCPF(Valor)
If bValida Then
sCPF = Valor
Else
Throw (New System.ArgumentException(msgErro, [Ô]Numero do CPF[Ô]))
Form1.txtCPF.Clear()
Form1.txtCPF.Focus()
End If
End Set
End Property
Public ReadOnly Property isCpfValido() As Boolean
Get
bValida = ValidaCPF(cpf)
If bValida Then
Return True
Else
Return False
End If
End Get
End Property
Private Function ValidaCPF(ByVal CPF As String) As Boolean
Dim i, x, n1, n2 As Integer
If CPF <> [Ô][Ô] Then
CPF = CPF.Trim()
Else
MsgBox([Ô]CPF Inválido[Ô])
Form1.txtCPF.Clear()
Form1.txtCPF.Focus()
End If
For i = 0 To dadosArray.Length - 1
If dadosArray(i).Equals(CPF) Then
Return False
End If
Next
[ô]Aqui está dando erro, a mensagem pede para usar a palavra “new†para criar uma instância do objeto
CPF = CPF.Substring(0, 3) + CPF.Substring(4, 3) + CPF.Substring(8, 3) + CPF.Substring(12)
For x = 0 To 1
n1 = 0
For i = 0 To 8 + x
n1 = n1 + Val(CPF.Substring(i, 1)) * (10 + x - i)
Next
n2 = 11 - (n1 - (Int(n1 / 11) * 11))
If n2 = 10 Or n2 = 11 Then n2 = 0
If n2 <> Val(CPF.Substring(9 + x, 1)) Then
Return False
End If
Next
Return True
End Function
End Class
Public Class Form1
Private Sub formatacpf(ByVal txtCPF As Object)
txtCPF.MaxLength = 14
If Len(txtCPF.Text) = 3 Then
txtCPF.Text = txtCPF.Text & [Ô].[Ô]
txtCPF.SelectionStart = Len(txtCPF.Text) + 1
ElseIf Len(txtCPF.Text) = 7 Then
txtCPF.Text = txtCPF.Text & [Ô].[Ô]
txtCPF.SelectionStart = Len(txtCPF.Text) + 1
ElseIf Len(txtCPF.Text) = 11 Then
txtCPF.Text = txtCPF.Text & [Ô]-[Ô]
txtCPF.SelectionStart = Len(txtCPF.Text) + 1
End If
End Sub
Private Sub txtCPF_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtCPF.KeyPress
If IsNumeric(e.KeyChar) AndAlso txtCPF.TextLength < txtCPF.MaxLength Then
txtCPF.Text &= e.KeyChar
txtCPF.SelectionStart = txtCPF.TextLength
Call formatacpf(txtCPF)
End If
e.Handled = True
End Sub
Private Sub btnValidarCPF_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnValidarCPF.Click
Dim confcpf As New Valida_CNPJ_CPF
If txtCPF.Text = [Ô][Ô] Then
MsgBox([Ô]CPF Inválido[Ô])
txtCPF.Focus()
End If
[ô]CPF = CPF.ToString.Trim
If confcpf.isCpfValido() Then
MsgBox([Ô]CPF valido[Ô])
Else
MsgBox([Ô]CPF Inválido[Ô])
txtCPF.Clear()
End If
End Sub
End Class
Public Class Valida_CNPJ_CPF
Private dadosArray() As String = {[Ô]000.000.000-00[Ô], [Ô]111.111.111-11[Ô], [Ô]222.222.222-22[Ô], [Ô]333.333.333-33[Ô], [Ô]444.444.444-44[Ô], [Ô]555.555.555-55[Ô], [Ô]666.666.666-66[Ô], [Ô]777.777.777-77[Ô], [Ô]888.888.888-88[Ô], [Ô]999.999.999-99[Ô]}
Private Const msgErro As String = [Ô]Dados Inválidos[Ô]
Private bValida As Boolean
Private sCPF As String
Private sCNPJ As String
Public Property cpf() As String
Get
Return sCPF
End Get
Set(ByVal Valor As String)
bValida = ValidaCPF(Valor)
If bValida Then
sCPF = Valor
Else
Throw (New System.ArgumentException(msgErro, [Ô]Numero do CPF[Ô]))
Form1.txtCPF.Clear()
Form1.txtCPF.Focus()
End If
End Set
End Property
Public ReadOnly Property isCpfValido() As Boolean
Get
bValida = ValidaCPF(cpf)
If bValida Then
Return True
Else
Return False
End If
End Get
End Property
Private Function ValidaCPF(ByVal CPF As String) As Boolean
Dim i, x, n1, n2 As Integer
If CPF <> [Ô][Ô] Then
CPF = CPF.Trim()
Else
MsgBox([Ô]CPF Inválido[Ô])
Form1.txtCPF.Clear()
Form1.txtCPF.Focus()
End If
For i = 0 To dadosArray.Length - 1
If dadosArray(i).Equals(CPF) Then
Return False
End If
Next
[ô]Aqui está dando erro, a mensagem pede para usar a palavra “new†para criar uma instância do objeto
CPF = CPF.Substring(0, 3) + CPF.Substring(4, 3) + CPF.Substring(8, 3) + CPF.Substring(12)
For x = 0 To 1
n1 = 0
For i = 0 To 8 + x
n1 = n1 + Val(CPF.Substring(i, 1)) * (10 + x - i)
Next
n2 = 11 - (n1 - (Int(n1 / 11) * 11))
If n2 = 10 Or n2 = 11 Then n2 = 0
If n2 <> Val(CPF.Substring(9 + x, 1)) Then
Return False
End If
Next
Return True
End Function
End Class
Public Function isCPF(ByVal CPF As String) As Boolean
Dim conta As Integer, soma As Integer, resto As Integer, Passo As Integer
isCPF = False
CPF = Trim(CPF)
CPF = Replace(CPF, [Ô].[Ô], [Ô][Ô])
CPF = Replace(CPF, [Ô]-[Ô], [Ô][Ô])
If Len(CPF) <> 11 Then
Exit Function
End If
For Passo = 11 To 12
soma = 0
For conta = 1 To Passo - 2
soma = soma + Val(Mid(CPF, conta, 1)) * (Passo - conta)
Next
resto = 11 - (soma - (Int(soma / 11) * 11))
If resto = 10 Or resto = 11 Then resto = 0
If resto <> Val(Mid(CPF, Passo - 1, 1)) Then
Exit Function
End If
Next
isCPF = True
End Function
Acima função bem simples para validar cpf, e para formatar utilize um maskeditbox.
Para chamar a função:
If isCPF(TXT_CPF.Text.Trim) = False Then
MsgBox([Ô][Ô][Ô]CPF[Ô][Ô] Inválido[Ô], vbCritical, [Ô]Aviso[Ô])
Exit Sub
End If
Dim conta As Integer, soma As Integer, resto As Integer, Passo As Integer
isCPF = False
CPF = Trim(CPF)
CPF = Replace(CPF, [Ô].[Ô], [Ô][Ô])
CPF = Replace(CPF, [Ô]-[Ô], [Ô][Ô])
If Len(CPF) <> 11 Then
Exit Function
End If
For Passo = 11 To 12
soma = 0
For conta = 1 To Passo - 2
soma = soma + Val(Mid(CPF, conta, 1)) * (Passo - conta)
Next
resto = 11 - (soma - (Int(soma / 11) * 11))
If resto = 10 Or resto = 11 Then resto = 0
If resto <> Val(Mid(CPF, Passo - 1, 1)) Then
Exit Function
End If
Next
isCPF = True
End Function
Acima função bem simples para validar cpf, e para formatar utilize um maskeditbox.
Para chamar a função:
If isCPF(TXT_CPF.Text.Trim) = False Then
MsgBox([Ô][Ô][Ô]CPF[Ô][Ô] Inválido[Ô], vbCritical, [Ô]Aviso[Ô])
Exit Sub
End If
caro NILSONTRES
desculpa meu amigo, mas eu não entendi onde eu coloco esse código?
desculpa meu amigo, mas eu não entendi onde eu coloco esse código?
Citação::
caro NILSONTRES
desculpa meu amigo, mas eu não entendi onde eu coloco esse código?
crie um metodo ou coloque em um modulo, ai coloque essa parte
If isCPF(TXT_CPF.Text.Trim) = False Then
MsgBox([Ô][Ô][Ô]CPF[Ô][Ô] Inválido[Ô], vbCritical, [Ô]Aviso[Ô])
Exit Sub
no evento validading do maskedtextbox, fica melhor doque colocar um botão
Citação:desculpa meu amigo, mas eu não entendi onde eu coloco esse código?
A Função ou a chamada dela ?
Na verdade não tem diferença do que vc já esta fazendo, só altere a função e a chamada.
NILSONTRES
vlw meu amigo, muito obrigado mesmo
vlw meu amigo, muito obrigado mesmo
Tópico encerrado , respostas não são mais permitidas