Modules

5.20 Controllo del Codice fiscale (2)
  Giovanni Menga
La funzione è una rielaborazione di una funzione già presente nel Sito Comune.
Ho rielaborato la funzione proposta da Federico Luciani per il controllo dell'esattezza del Codice Fiscale dandogli una maggiore compattezza. Credo che l'utilizzo della funzione InStr renda il codce più veloce rispetto al Select Case originale. Ho fatto un test su diversi codici fiscali e funziona fornendo sempre lo stesso valore della funzione di Luciani.

Utilizzo inoltre la sintassi FunzioneVeroFalso = Condizione in modo da evitare le classiche IF .. Then .. Else che ritengo migliorativa per le prestazioni e "più elegante" (non saprei esprimermi meglio) dal punto di vista della programmazione.

La funzione è:
Public Function CheckCodFiscale(CFis As String) As Boolean
    'Autore: Federico Luciani
    'Accetta: CFis = Codice fiscale da verificare
    'Restituisce: true se il Codice fiscale è corretto
    'Modificata da Giovani Menga
    CheckCodFiscale = ((Len(CFis) = 16) Or Len(CFis) = 0)
    Dim I As Byte
    Dim strDis As String, strPar As String
    Dim SumTot As Integer
    strDis = "BAKPLCQDREVOSFTGUHMINJWZYX10---2-3-4---5-6-7-8-9"
    strPar = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
    For I = 1 To 15
        SumTot = SumTot - ((InStr(strPar, Mid$(CFis, I, 1)) - 1) Mod 26) * (I Mod 2 = 0) - ((InStr(strDis, Mid$(CFis, I, 1)) - 1) Mod 26) * (I Mod 2 = 1)
    Next
    CheckCodFiscale = (Mid$(strPar, (SumTot Mod 26) + 1, 1) = UCase$(Right(CFis, 1)))
End Function


Se pensate di avere del materiale freeware interessante e volete pubblicarlo, allora leggete qui.