Jak sprawdzić czy PESEL jest prawidłowy Excel VBA

By barutowicz|06/07/2018|Excel, VBA|0 komentarze

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.

Jak sprawdzić czy PESEL jest prawidłowy Excel VBA - Wstaw przycisk

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")

Jak sprawdzić czy PESEL jest prawidłowy Excel VBA - inputbox

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"

Jak sprawdzić czy PESEL jest prawidłowy Excel VBA - msgbox

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"

Jak sprawdzić czy PESEL jest prawidłowy Excel VBA - msgbox 2

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"

Jak sprawdzić czy PESEL jest prawidłowy Excel VBA - msgbox wynik

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

Jak sprawdzić czy PESEL jest prawidłowy Excel VBA - msgbox nok wynik

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

Udostępnij znajomym:

Dodaj komentarz