Cálculo de la Letra del NIF

Por: jimerino@arrakis.es
Fecha: 23/Jun/97 (aunque como verás más abajo, está desde hace tiempecillo...)


Date sent: Mon, 07 Apr 1997 11:59:48 +0200
From:
jimerino@arrakis.es

¡Oye! muy buena tu página. Y una grandísima idea. Si quieres te mando una pequeña colaboración para sacar el NIF a partir de un número de DNI. La forma en la que se calcula el NIF es una chorrada, pero lo que sí es complicado es saber a qué número corresponde una letra. Para calcular el NIF hay que dividir el DNI entre 23 y el resto es codificado por una letra. Así si el resto es 0, el NIF es T, si es 1, el NIF ES R etc.... Bueno, nme dejo de enrrollar.
Si alguien quiere más información, que me escriba:
jimerino@arrakis.es.
La forma de utilización es muy simple: tan sólo hay que añadir el fichero nif.bas al proyecto y si se quiere calcular el NIF de un DNI tan sólo hay que hacer la llamada Calc_NIF(DNI.Text) (aquí he supuesto que el DNI está escrito en el TextBox llamado DNI) y en la propia llamada te devuelve el NIF (al más puro estilo C). Así que creando dos TextBox juntitos, uno llamado DNI y otro NIF, poniendo en el evento Lost_Focus del DNI la línea NIF.Text = Calc_NIF(DNI.Text) Está todo listo. Por ahora dejo esto, a ver si tengo un poquito más de tiempo y prepara algo más jugoso para tu página.

Public Function Calc_NIF(DNI) As String
    Dim resto As Integer
    If DNI = "" Then
        Calc_NIF = ""
        Exit Function
    End If
    If DNI <> Val(DNI) Then
        Calc_NIF = ""
        Exit Function
    End If
    resto = Val(DNI) Mod 23
    Select Case resto
        Case 0
            Calc_NIF = "T"
        Case 1
            Calc_NIF = "R"
        Case 2
            Calc_NIF = "W"
        Case 3
            Calc_NIF = "A"
        Case 4
            Calc_NIF = "G"
        Case 5
            Calc_NIF = "M"
        Case 6
            Calc_NIF = "Y"
        Case 7
            Calc_NIF = "F"
        Case 8
            Calc_NIF = "P"
        Case 9
            Calc_NIF = "D"
        Case 10
            Calc_NIF = "X"
        Case 11
            Calc_NIF = "B"
        Case 12
            Calc_NIF = "N"
        Case 13
            Calc_NIF = "J"
        Case 14
            Calc_NIF = "Z"
        Case 15
            Calc_NIF = "S"
        Case 16
            Calc_NIF = "Q"
        Case 17
            Calc_NIF = "V"
        Case 18
            Calc_NIF = "H"
        Case 19
            Calc_NIF = "L"
        Case 20
            Calc_NIF = "C"
        Case 21
            Calc_NIF = "K"
        Case 22
            Calc_NIF = "E"
End Select
End Function

ir al índice