General

6.24 Controllo Partita IVA.
  AntoGal
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.


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