Fiindca lucrez destul de des cu ele, am scris o functie in VBA ce verifica daca un CNP este corect sau nu.
Pentru mai multe detalii despre cum se atribuie un CNP si ce reprezinta fiecare cifra din el, va invit sa cititi aici.
Function Validare_CNP(CNP As String) As String
Dim i As Integer, x As Integer
Dim cnp_array(13) As Integer
If Len(CNP) <> 13 Then
Validare_CNP = "CNP-ul nu are 13 cifre" ' daca CNP-ul nu are 13 caractere atunci functia returneaza mesajul "CNP-ul nu are 13 cifre"
Else
For i = 1 To 13
cnp_array(i) = Val(Mid(CNP, i, 1))
Next i
x = (cnp_array(1) * 2 + cnp_array(2) * 7 + cnp_array(3) * 9 + cnp_array(4) * 1 + cnp_array(5) * 4 + cnp_array(6) * 6 + _
cnp_array(7) * 3 + cnp_array(8) * 5 + cnp_array(9) * 8 + cnp_array(10) * 2 + cnp_array(11) * 7 + cnp_array(12) * 9) Mod 11
If x = 10 Then
x = 1
End If
If x = cnp_array(13) Then
Validare_CNP = "Valid" ' daca rezultatul calculului de mai sus este egal cu a 13-a cifra din CNP atunci CNP-ul este valid
Else
Validare_CNP = "Invalid"
End If
End If
End Function
Spor
Deci asta este o functie care valideaza CNP-uri. Super cool. Dar cum se foloseste, please?
RăspundețiȘtergeremai trebuie verificat daca CNP-ul este de tip numeric
RăspundețiȘtergere