USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Tratamento de Erros
Evertooon
PARANAGUÁ
PR - BRASIL
ENUNCIADA !
Postada em 15/06/2007 14:16 hs         
Seguinte pessoal,
 
qdo eu executo meu programa pelo VB, os tratamentos de erro funcionam direito, porém quando eu compilo e executo direto o executável, ele dá um erro:
 
Run Time error "5"
Invalid procedure or call argument
 
e daí finaliza o programa
 
Tenho uma função de verificação de CPF/CNPJ, em um módulo, dessa forma:
 
Public vErro As Boolean
Public Function isCNPJ(ByVal pCNPJ As String) As Boolean
 
Dim Conta As Integer, Soma As Long, Passo As Integer
Dim Digito1 As Integer, Digito2 As Integer, Flag As Integer
   
    vErro = False
    isCNPJ = False: pCNPJ = Trim(pCNPJ)
   
    If Len(pCNPJ) <> 14 Then
        vErro = True
    End If
   
    For Passo = 5 To 6
        Soma = 0
        Flag = Passo
       
        For Conta = 1 To Passo + 7
            Soma = Soma + (Val(Mid(pCNPJ, Conta, 1)) * Flag)
            Flag = IIf(Flag > 2, Flag - 1, 9)
        Next
       
        Soma = Soma Mod 11
       
        If Passo = 5 Then Digito1 = IIf(Soma > 1, 11 - Soma, 0)
        If Passo = 6 Then Digito2 = IIf(Soma > 1, 11 - Soma, 0)
    Next
   
    If (Digito1 = Val(Mid(pCNPJ, 13, 1)) And Digito2 = Val(Mid(pCNPJ, 14, 1))) Then
        isCNPJ = True
    Else
        vErro = True
    End If
   
End Function
Public Function isCPF(ByVal pCPF As String) As Boolean
   
Dim Conta As Integer, Soma As Integer, Resto As Integer, Passo As Integer
    vErro = False
    isCPF = False: pCPF = Trim(pCPF)
   
    If Len(pCPF) <> 11 Then
        vErro = True
    End If
   
    For Passo = 11 To 12
        Soma = 0
        For Conta = 1 To Passo - 2
            Soma = Soma + Val(Mid(pCPF, 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(pCPF, Passo - 1, 1)) Then
            vErro = True
        End If
    Next
   
    isCPF = True
End Function
 
Aí no evento LostFocus da textbox, tem o código:
 
Private Sub txtCPF_LostFocus()
If Not txtCPF.Text = Empty Then
    Call isCPF(txtCPF.Text)
        If CNPJ_CPF.vErro = True Then
            MsgBox "CPF inválido", vbInformation + vbOKOnly + vbApplicationModal, ""
            txtCPF.SetFocus
        End If
End If
End Sub
 
 
Private Sub txtCNPJ_LostFocus()
If Not txtCNPJ.Text = Empty Then
    Call isCNPJ(txtCNPJ.Text)
        If CNPJ_CPF.vErro = True Then
            MsgBox "CNPJ inválido", vbInformation + vbOKOnly + vbApplicationModal, ""
            txtCNPJ.SetFocus
        End If
End If
End Sub
 
O que pode estar ocorrendo???
 
Agradeço!
   
ghost_jlp
Pontos: 2843 Pontos: 2843 Pontos: 2843 Pontos: 2843
SÃO PAULO
SP - BRASIL
Postada em 15/06/2007 16:12 hs            
Function tem q retornar algo então o correto é:
 
IF isCPF then 'CASO NÃO SEJA CPF
ENDIF
 
IF isCNPJ Then 'CASO NÃO SEJA CNPJ
ENDIF
 
para usar o "Call" não pode ser function e sim uma Procedure (SUB)
 
Public SUB isCPF(ByVal pCPF As String)
Public SUB isCNPJ(ByVal pCNPJ As String)
 
At+
     
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página