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 |