'Rotina para validacao de CPF - o cpf deverá ser passado através de uma string
Function Valida_CPF (NrCPF)
	
	dim dv 
	dim cpf
	dim c_cpf
	dim cont
	dim aux
	dim aux2
	dim varNr_CPF
    varNr_CPF = Trim (NrCPF)
	c_cpf = ""
	cpf   = ""
	dv    = 0
	
	'Verifica se o cpf contem a máscara de formatação e retira a máscara
	if Instr(1,varNr_CPF,"-") <> 0 then
		Aux   = Split(varNr_CPF,"-")
		
		for cont = 0 to UBound(Aux)
			cpf = cpf&Aux(cont)
		next
		varNr_CPF = cpf
	else
		cpf = varNr_CPF
	end if

	if Instr(1,varNr_CPF,".") <> 0 then
		Aux2   = Split(varNr_CPF,".")
		cpf = ""
		for cont = 0 to UBound(Aux2)
			cpf = cpf&Aux2(cont)
		next
	else
		cpf = varNr_CPF
	end if

	'Verifica se o cpf tem o comprimento correto
		
	if Len(cpf) < 11 then
		Valida_CPF = False
		Exit function
	else
		c_cpf = mid(cpf,1,9)
	end if

	
	'Cálculo do primeiro digito verificador
	for cont = 2 to 10
		dv = dv +cont*(Mid(C_Cpf,11-cont,1))
	next
		
	dv = dv mod 11

	if dv < 2 then
		dv = 0
	else
		dv = 11 - dv
	end if

	c_cpf = c_cpf&Cstr(dv)


	'Primeira comparacao
	if c_cpf <> Mid(cpf,1,10) then
		Valida_CPF = False
		Exit Function
	end if
	
	'Cálculo do Segundo digito verificador
	dv = 0
	
	for cont = 2 to 11
		dv = dv + cont*(Mid(c_cpf,12-cont,1))
	next
	
	dv = dv mod 11
	
	if dv < 2 then
	   dv = 0
	else
           dv = 11-dv
	end if

	
	c_cpf = c_cpf&Cstr(dv)

	if c_cpf <> cpf then
		Valida_CPF = False
		exit Function
	else
		Valida_CPF = True
		exit Function
	end if
 		

End Function

