Verificar CUIL y CUIT (Sólo para Argentina)


Ya sea en sistemas de gestión como en facturación o liquidación de haberes la necesidad de verificar la integridad y validez de una clave CUIL o CUIT puede ahorrarnos futuros dolores de cabeza cuando el operador ingrese mal un dato y nos haga perder varias horas de trabajo para subsanar el problema causado.

Básicamente una clave CUIL o CUIT está formada por dos números, un guión, otros ocho números, otro guión y un último número que hace las veces de dígito verificador.

El sub que presentamos aquí debe agregarse en un módulo BAS cualquiera que sea y con sólo llamarlo pasándole el CUIL o CUIT a comprobar hará el trabajo necesario y, de haber error, presentará una paleta de aviso.

A continuación el código:

Sub VerificarCUIT (CUIT)
'Verifica si el tamaño es el correcto.
If Len(CUIT) = 13 Then

    'Individualiza y multiplica los dígitos.
    XA = Val(Mid$(CUIT, 1, 1)) * 5
    XB = Val(Mid$(CUIT, 2, 1)) * 4
    XC = Val(Mid$(CUIT, 4, 1)) * 3
    XD = Val(Mid$(CUIT, 5, 1)) * 2
    XE = Val(Mid$(CUIT, 6, 1)) * 7
    XF = Val(Mid$(CUIT, 7, 1)) * 6
    XG = Val(Mid$(CUIT, 8, 1)) * 5
    XH = Val(Mid$(CUIT, 9, 1)) * 4
    XI = Val(Mid$(CUIT, 10, 1)) * 3
    XJ = Val(Mid$(CUIT, 11, 1)) * 2

    'Suma los resultantes.
    x = XA + XB + XC + XD + XE + XF + XG + XH + XI + XJ

    'Calcula el dígito de control.
    Control = (11 - (x Mod 11)) Mod 11

    'Verifica si el dígito de control ingresado difiere con el calculado.
    If Control <> Val(Mid$(CUIT, 13, 1)) Then

        'Presenta la ventana de aviso.
        MsgBox "El CUIT ingresado es incorrecto. Verifíquelo e intente nuevamente." + Chr$(13) + Chr$(13) + "CUIT Ingresado: " + CUIT + Chr$(13) + "CUIT Estimativo: " + Left(CUIT, 12) + Trim$(Str$(Control)), 48, "CUIT ERRONEO"

        End If

    End If

End Sub

La forma de llamarlo es:

Sub CUIT_Change ()
VerificarCUIT (CUIT)

End Sub

Aquí el control es un textbox que dispusimos para ingresar un CUIT y, justamente, su contenido es el pasado como dato a la sub.

Autor: Pablo Canello