non sono sigle...

si prendono le consonanti di cognome nome
poi anno (xx) mese e giorno
"sigla della città"
codice di controllo

scarica dalla mia firma il prg per il calcolo!

questa funzione verifica l'esattezza del codice fiscale
'---Funzione controllo codice fiscale
FUNCTION Ctrl_codicefiscale(cf)
CodiceFiscale = Trim(UCASE(cf))
If CF_caratteri(CodiceFiscale) Then
Ctrl_codicefiscale = False
Else
Dim Lettere(35,2)
Dim ConfrontoCarattereControllo(25)
Dim I
Dim J
Dim Carattere
Dim ValorePari
Dim ValoreDispari
Dim SommaCaratteri
Dim PariDispari
Dim Risultato
Dim CarattereControllo
Dim Temp
Dim Test

Lettere(0,0) = "A"
Lettere(0,1) = "0"
Lettere(0,2) = "1"

Lettere(1,0) = "B"
Lettere(1,1) = "1"
Lettere(1,2) = "0"

Lettere(2,0) = "C"
Lettere(2,1) = "2"
Lettere(2,2) = "5"

Lettere(3,0) = "D"
Lettere(3,1) = "3"
Lettere(3,2) = "7"

Lettere(4,0) = "E"
Lettere(4,1) = "4"
Lettere(4,2) = "9"

Lettere(5,0) = "F"
Lettere(5,1) = "5"
Lettere(5,2) = "13"

Lettere(6,0) = "G"
Lettere(6,1) = "6"
Lettere(6,2) = "15"

Lettere(7,0) = "H"
Lettere(7,1) = "7"
Lettere(7,2) = "17"

Lettere(8,0) = "I"
Lettere(8,1) = "8"
Lettere(8,2) = "19"

Lettere(9,0) = "J"
Lettere(9,1) = "9"
Lettere(9,2) = "21"

Lettere(10,0) = "K"
Lettere(10,1) = "10"
Lettere(10,2) = "2"

Lettere(11,0) = "L"
Lettere(11,1) = "11"
Lettere(11,2) = "4"

Lettere(12,0) = "M"
Lettere(12,1) = "12"
Lettere(12,2) = "18"

Lettere(13,0) = "N"
Lettere(13,1) = "13"
Lettere(13,2) = "20"

Lettere(14,0) = "O"
Lettere(14,1) = "14"
Lettere(14,2) = "11"

Lettere(15,0) = "P"
Lettere(15,1) = "15"
Lettere(15,2) = "3"

Lettere(16,0) = "Q"
Lettere(16,1) = "16"
Lettere(16,2) = "6"

Lettere(17,0) = "R"
Lettere(17,1) = "17"
Lettere(17,2) = "8"

Lettere(18,0) = "S"
Lettere(18,1) = "18"
Lettere(18,2) = "12"

Lettere(19,0) = "T"
Lettere(19,1) = "19"
Lettere(19,2) = "14"

Lettere(20,0) = "U"
Lettere(20,1) = "20"
Lettere(20,2) = "16"

Lettere(21,0) = "V"
Lettere(21,1) = "21"
Lettere(21,2) = "10"

Lettere(22,0) = "W"
Lettere(22,1) = "22"
Lettere(22,2) = "22"

Lettere(23,0) = "X"
Lettere(23,1) = "23"
Lettere(23,2) = "25"

Lettere(24,0) = "Y"
Lettere(24,1) = "24"
Lettere(24,2) = "24"

Lettere(25,0) = "Z"
Lettere(25,1) = "25"
Lettere(25,2) = "23"

Lettere(26,0) = "0"
Lettere(26,1) = "0"
Lettere(26,2) = "1"

Lettere(27,0) = "1"
Lettere(27,1) = "1"
Lettere(27,2) = "0"

Lettere(28,0) = "2"
Lettere(28,1) = "2"
Lettere(28,2) = "5"

Lettere(29,0) = "3"
Lettere(29,1) = "3"
Lettere(29,2) = "7"

Lettere(30,0) = "4"
Lettere(30,1) = "4"
Lettere(30,2) = "9"

Lettere(31,0) = "5"
Lettere(31,1) = "5"
Lettere(31,2) = "13"

Lettere(32,0) = "6"
Lettere(32,1) = "6"
Lettere(32,2) = "15"

Lettere(33,0) = "7"
Lettere(33,1) = "7"
Lettere(33,2) = "17"

Lettere(34,0) = "8"
Lettere(34,1) = "8"
Lettere(34,2) = "19"

Lettere(35,0) = "9"
Lettere(35,1) = "9"
Lettere(35,2) = "21"

For I = 0 To 25
ConfrontoCarattereControllo(I) = Chr(65 + I) 'creo in ConfrontoCarattereControllo tutte le lettere maiuscole dalla A (chr(65)) alla Z(chr(90))
Next

Carattere=0
ValorePari=1 'indice della seconda colonna della matrice Lettere
ValoreDispari=2 'indice della terza colonna della matrice Lettere
SommaCaratteri=0
CarattereControllo=Right(CodiceFiscale,1)

for I=1 to len(CodiceFiscale)-1
if (I mod 2)=0 then
PariDispari="P"
else
PariDispari="D"
end if

Temp =mid(CodiceFiscale,I,1)
J=0
do
Test=Lettere(J,Carattere)
J=J+1
loop until Temp=Test
J=J-1

if PariDispari="P" then
SommaCaratteri=SommaCaratteri + CInt(Lettere(J,ValorePari))
else
SommaCaratteri=SommaCaratteri + CInt(Lettere(J,ValoreDispari))
end if
Next

Risultato=SommaCaratteri mod 26

Risultato=ConfrontoCarattereControllo(Risultato)

if Risultato<>CarattereControllo then
Ctrl_codicefiscale = False
else
Ctrl_codicefiscale = True
end if
End If
END FUNCTION