Public Function CheckPartitaIva(Piva As String) As Boolean
'Autore: AntoGal
'Accetta: Piva = la Partita IVA da verificare
'Restituisce: true se la Partita IVA è corretta
If Not Piva Like "###########" Then 'controlla che siano 11 cifre
CheckPartitaIva = False
Exit Function
End If
'verifica ultima cifra
Dim i As Integer, SumDisp As Integer, SumPari As Integer, _
Radd As Integer, SumTot As Integer, Check As Integer
'1. si sommano le cifre di ordine dispari (in posizione 1,3,5,7,9)
For i = 1 To 9 Step 2
SumDisp = SumDisp + Val(Mid(Piva, i, 1))
Next i
'2. Si raddoppiano le cifre di ordine pari (in posizione 2,4,6,8,10)
'Se il risultato è un numero di due cifre, si riduce ad una sola cifra
'sommando le due che lo compongono (es: 15 diventa 6: 1+5)
For i = 2 To 10 Step 2
Radd = 2 * Val(Mid(Piva, i, 1))
If Radd > 9 Then
Radd = Val(Left(CStr(Radd), 1)) + Val(Right(CStr(Radd), 1))
End If
SumPari = SumPari + Radd
Next i
'3. Si sommano tutti i precedenti risultati (delle cifre dispari e di
'quelle pari raddoppiate come spiegato)
'4. Si determina il totale delle due somme (delle pari e delle dispari).
SumTot = SumPari + SumDisp
'5. Del risultato, si prende solo la cifra delle unità
'(es: se il risultato è 36, la cifra che ci interessa è 6)
SumTot = SumTot Mod 10
'6. Questa cifra si sottrae dal numero 10 (lo stabilisce l'art. 9 del
'DM. del 23.12.1976 che regola l'attribuzione dei codici fiscali).
Check = (10 - SumTot) Mod 10 'se viene 10 il check è 0
'Il risultato è la cifra di controllo
If Check = Val(Right(Piva, 1)) Then
CheckPartitaIva = True
Else
CheckPartitaIva = False
End If
End Function
Per informazioni sull'algoritmo di calcolo della Partita IVA si consiglia la lettura del Decreto Ministeriale del 23 dicembre 1976.
|