Jak sprawdzić czy PESEL jest prawidłowy Excel VBA
Za pomocą Excela i VBA zrobimy formularz który będzie sprawdzał czy wpisany numer przez użytkownika numer PESEL jest prawidłowy o wynikach będziemy informować za pomocą MsgBox.
Wstawmy przycisk który uruchomi nasze makro zakładka „Deweloper” a następnie „Wstaw” i wybieramy „Przycisk”. Następnie przypiszmy nowe makro.
Nasz kod zaczniemy od zadeklarowanie trzech zmiennych:
Dim pesel, Liczba_Kontrolna, Suma_Kontrolna
Do naszej zmiennej „pesel” przypiszemy wartość podana przez użytkownika za pomocą „InputBox”
pesel = InputBox("Wprowadz PESEL:", "Weryfikacja numeru PESEL")
Sprawdźmy czy podany ciąg znaków nie jest za krótki.
If Len(pesel) < 11 Then
Jeżeli wprowadzony ciąg znaków jest krótszy niż 11 znaków to użytkownik zostanie o tym powiadomiony za pomocą „MsgBox”
MsgBox " Podany PESEL jest za krótki"
Sprawdzamy również czy podany ciąg znaków nie jest za długi
ElseIf Len(pesel) > 11 Then
Tutaj również powiadomimy użytkownika o tym że wpisał za dużo znaków
MsgBox "Podany PESEL jest za długi"
W pozostałych przypadkach zapisujemy do naszej zmiennej „Liczba_Kontrolna” ostatni znak ze zmiennej „pesel” w tym celu wykorzystamy funkcje „Right”
Liczba_Kontrolna = Right(pesel, 1)
Następnie obliczamy sumę kontrolną dla naszego numeru w tym celu wykorzystamy funkcje „Mid” i kolejne liczby w naszym numerze będziemy mnożyć przez 9/7/3/1/9/7/3/1/9/7 a otrzymana wartość przedzielimy przez 10 za pomocą funkcji „Mod” i wartość z tego dzielenia zapiszemy do zmiennej „Suma_Kontrolna”
Suma_Kontrolna = (((Mid(pesel, 1, 1) * 9) + (Mid(pesel, 2, 1) * 7) + (Mid(pesel, 3, 1) * 3) + (Mid(pesel, 4, 1) * 1) + (Mid(pesel, 5, 1) * 9) _ + (Mid(pesel, 6, 1) * 7) + (Mid(pesel, 7, 1) * 3) + (Mid(pesel, 8, 1) * 1) + (Mid(pesel, 9, 1) * 9) + (Mid(pesel, 10, 1) * 7))) Mod 10
Zostało tylko sprawdzić czy po odjęciu od zmiennej “Liczba_Kontrolna” (ostatnia liczba numeru PESEL) zmiennej “ Suma_Kontrolna”(reszta z dzielenia przez 10) otrzymamy 0 jeżeli tak się stanie to oznacza że nasz numer jest prawidłowy.
If Liczba_Kontrolna - Suma_Kontrolna = 0 Then MsgBox "PESEL poprawny!" & vbNewLine & "Suma kontrolna: " & Suma_Kontrolna & vbNewLine & "Liczba kontrolna: " & Liczba_Kontrolna, vbInformation + vbOKOnly, "Weryfikacja numeru PESEL"
W innym wypadku nasz pesel jest nie prawidłowy i pozostało nam o tym powiadomić użytkownika
Else MsgBox "PESEL niepoprawny!" & vbNewLine & "Suma kontrolna: " & Suma_Kontrolna & vbNewLine & "Liczba kontrolna: " & Liczba_Kontrolna, vbExclamation + vbOKOnly, "Weryfikacja numeru PESEL" End If End If End Sub
Jako zadanie można dopisać weryfikacje czy podany ciąg znaków wpisany do inputbox składa się tylko z cyfr. Po kliknięciu “OK” użytkownik zostanie poinformowany o źle wpisanym numerze i zostanie poproszony o ponowne podanie numeru.
Rozwiązanie można wpisywać do komentarza.
Zapraszam również do zapoznania się z artykułem na temat weryfikacji numeru NIP w VBA tutaj