Espero estar en el lugar correcto.
Estoy buscando un código que se anexe a Microsoft Visual Basic y utilizarlo en excel que verifique eh indique si el numero es "correcto" o "incorrecto".
Tal como sucede con el numero de RUT todo se basa en operaciones matematicas pero que al hacerlas de manera primitiva (multiples funciones que generen una operacion para un resultado final) vuelve extremadamente pesado el archivo.
Encontre un codigo que tiene algun error, pero no manejo el programa. A ver si alguien entiende del tema.
Function xxDigVerContainer()
LPARAMETERS lcCont
LOCAL lnDigito, lnSuma1, lnDigVer
IF LEN(lcCont)#10 && no debe haber espacio entre las letras y los números
RETURN -1 && si devuelve -1 es porque falló
End If
*
lnSuma1 = 0
For i = 1 To 10
IF i>4
lnDigito = Val(SUBSTR(lcCont, i, 1))
Else
lnDigito = Asc(SUBSTR(lcCont, i, 1)) - 55
lnDigito = lnDigito + Int((lnDigito - 1) / 10)
End If
lnSuma1 = lnSuma1 + lnDigito * 2^(i-1)
ENDFOR
*
lnDigVer = lnSuma1 - Int(lnSuma1 / 11) * 11
RETURN lnDigVer && ojo, lo devuelve como número, no como carácter
ENDFUN
Slds.
Estoy buscando un código que se anexe a Microsoft Visual Basic y utilizarlo en excel que verifique eh indique si el numero es "correcto" o "incorrecto".
Tal como sucede con el numero de RUT todo se basa en operaciones matematicas pero que al hacerlas de manera primitiva (multiples funciones que generen una operacion para un resultado final) vuelve extremadamente pesado el archivo.
Encontre un codigo que tiene algun error, pero no manejo el programa. A ver si alguien entiende del tema.
Function xxDigVerContainer()
LPARAMETERS lcCont
LOCAL lnDigito, lnSuma1, lnDigVer
IF LEN(lcCont)#10 && no debe haber espacio entre las letras y los números
RETURN -1 && si devuelve -1 es porque falló
End If
*
lnSuma1 = 0
For i = 1 To 10
IF i>4
lnDigito = Val(SUBSTR(lcCont, i, 1))
Else
lnDigito = Asc(SUBSTR(lcCont, i, 1)) - 55
lnDigito = lnDigito + Int((lnDigito - 1) / 10)
End If
lnSuma1 = lnSuma1 + lnDigito * 2^(i-1)
ENDFOR
*
lnDigVer = lnSuma1 - Int(lnSuma1 / 11) * 11
RETURN lnDigVer && ojo, lo devuelve como número, no como carácter
ENDFUN
Slds.