|
Microsoft Office Excel |
|
|
Funkcija za proveru JMBGNivo:
Korisnički definisane funkcije u Excelu su veoma zgodan način da proširite radnu funkcionalnost programa. Ponekad ćete tako u jednom potezu izvesti zahvate za koje bi vam trebalo mnogo koraka, a nekad ćete rešiti probleme koje drugačije ne biste uspeli. Dajemo vam jedan praktičan primer za takvu funkciju. Jedinstveni matični broj građana (JMBG) je danas uobičajena šifra za nedvosmislenu identifikacju lica. Ako vodite neke službene evidencije, korisno je da uključite i JMBG u popis. Zahvaljujući tome što je algoritam tog broja javno dostupan, ne bi bilo loše da ugradite logičku kontrolu ispravnosti unosa tog broja. Uzorak je sledeći (tačka je napisana samo zbog vašeg lakšeg tumačenja, inače se ne piše): DD.MM.GGG.OO.BBB.K gde delovi znače sledeće:
DD - dan rođenja
MM - mesec rođenja
GGG - poslednje tri cifre godine rođenja,
i to počev od (1)899. godine
OO - šifra opštine rođenja
BBB - redni broj rođene osobe po redosledu
upisa u matičnu knjigu rođenih;
muške osobe 001-499, ženske osobe 501-999
K - kontrolni broj po modulu 11
Funkcija koju vidite u prilogu ne ide u krajnje detalje, jer proverava samo dužinu, ispravnost datuma i kontrolni broj. Svakako, ovaj programski kod vam može poslužiti kao predložak koji ćete dalje razvijati. Funkcija je zamišljena tako da se upotrebi u posebnoj ćeliji, recimo negde u blizini ćelije u koju je upisan JMBG, pri čemu će kao rezultat ispisati tekst koji označava da je broj ispravan ili će ispisati neku od prepoznatih grešaka (pogledajte tekstove konstanti sa prefisksom ERR_). Postoji i način da funkciju adaptirate tako da se upotrebi u validaciji unosa, ali to je tema kojom ćemo se baviti drugom prilikom.
' funkcija vraća tekst sa opisom ispravnosti JMBG
' upotreba na radnom listu: =Proveri_JMBG(adr)
'
Function Proveri_JMBG(JMBG As String) As String
' inicijalizacija promenljivih
Dim duzina As Integer, zbir As Integer
Dim cifra(1 To 13) As Integer
Dim dan As Integer, mesec As Integer, godina As String
' iznicijalizacija konstanti; izmeniti po volji
Const ERR_dan = "GREŠKA: podatak o datumu neispravan!"
Const ERR_mesec = "GREŠKA: podatak o mesecu neispravan!"
Const ERR_godina = "GREŠKA: podatak o godini neispravan!"
Const ERR_duzina = "GREŠKA: dužina različita od 13!"
Const ERR_kont = "GREŠKA: neispravan kontrolni broj!"
Const OK_JMBG = "JMBG je ispravan"
' preuzimanje ulaznih vrednosti
duzina = Len(JMBG)
dan = Int(Left(JMBG, 2))
mesec = Int(Mid$(JMBG, 3, 2))
godina = Mid$(JMBG, 5, 3)
' provera dužine JMBG
If (duzina <> 13) Then
Proveri_JMBG = ERR_duzina
Exit Function
End If
' provera datuma
If dan < 1 Then
Proveri_JMBG = ERR_dan
Exit Function
End If
'' provera meseca i dana u mesecu
Select Case mesec
Case 1, 3, 5, 7, 8, 10, 12
If dan > 31 Then
Proveri_JMBG = ERR_dan
Exit Function
End If
Case 4, 6, 9, 11
If dan > 30 Then
Proveri_JMBG = ERR_dan
Exit Function
End If
Case 2
If ((godina Mod 4 = 0) And dan > 29) Or _
((godina Mod 4 <> 0) And dan > 28) Then
Proveri_JMBG = ERR_dan
Exit Function
End If
Case Else
Proveri_JMBG = ERR_mesec
Exit Function
End Select
' provera godine: ispravne su od 1899 do tekuće godine
If (godina > Right(Str(Year(Now)), 3)) And (godina < "899") Then
Proveri_JMBG = ERR_godina
Exit Function
End If
'' provera kontrolnog broja
For i = 1 To 13
cifra(i) = Int(Mid$(JMBG, i, 1))
Next i
zbir = cifra(13) + cifra(1) * 7 + cifra(2) * 6
zbir = zbir + cifra(3) * 5 + cifra(4) * 4
zbir = zbir + cifra(5) * 3 + cifra(6) * 2
zbir = zbir + cifra(7) * 7 + cifra(8) * 6
zbir = zbir + cifra(9) * 5 + cifra(10) * 4
zbir = zbir + cifra(11) * 3 + cifra(12) * 2
If (zbir Mod 11) <> 0 Then
Proveri_JMBG = ERR_kont
Else
Proveri_JMBG = OK_JMBG
End If
End Function
|
|
Vrh stranice Prethodna stranica Naslovna strana Mapa sajta Pretraga |
| AFORIZAM ZA DANAS | OVIH DANA SLUŠAMO... |
| Copyright © Praktikum na Webu, 2000-2011; Valinor Design; sva prava pridržana. |