Elaborei um formulário no Word para facilitar meu trabalho. Nele, tem um TextBox para inserção de CPF que, ao sair, verifica sua validade. Entretanto, ocorre o Erro em tempo de execução '13': Tipos incompatíveis e destaca a rotina intMais = intNumero * i na macro de validação.
Alguém pode ajudar a contornar, ou resolver, esse problema?
Validação do CPF:
Código: Selecionar todos
Option Explicit
Function DVCPF(CPF As String) As String
Dim lngSoma, lngInteiro As Long
Dim intNumero, intMais, i, intResto As Integer
Dim intDig1, intDig2 As Integer
Dim strDigVer, strcampo, strCaracter, StrConf As String
Dim dblDivisao As Double
lngSoma = 0
intNumero = 0
intMais = 0
strcampo = Left(CPF, 9)
strDigVer = Right(CPF, 2)
For i = 2 To 10
strCaracter = Right(strcampo, i - 1)
intNumero = Left(strCaracter, 1)
intMais = intNumero * i
lngSoma = lngSoma + intMais
Next i
dblDivisao = lngSoma / 11
lngInteiro = Int(dblDivisao) * 11
intResto = lngSoma - lngInteiro
If intResto = 0 Or intResto = 1 Then
intDig1 = 0
Else
intDig1 = 11 - intResto
End If
strcampo = strcampo & intDig1
lngSoma = 0
intNumero = 0
intMais = 0
For i = 2 To 11
strCaracter = Right(strcampo, i - 1)
intNumero = Left(strCaracter, 1)
intMais = intNumero * i
lngSoma = lngSoma + intMais
Next i
dblDivisao = lngSoma / 11
lngInteiro = Int(dblDivisao) * 11
intResto = lngSoma - lngInteiro
If intResto = 0 Or intResto = 1 Then
intDig2 = 0
Else
intDig2 = 11 - intResto
End If
StrConf = intDig1 & intDig2
DVCPF = StrConf
If DVCPF = strDigVer Then
'MsgBox "CPF válido!", vbInformation
Else
MsgBox "CPF inválido", vbCritical
'DoCmd.CancelEvent
End If
End Function
Código: Selecionar todos
Private Sub txt_CPF_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
Call DVCPF(Me.txt_CPF)
End Sub