Microsoft Office Excel
uređuje Dragan Grbić

 Office Praktikum | Mapa sajta 

 
Bookmark and Share
Matična strana sajta
Novo na sajtu
Mapa sajta
Beleške
Knjiga posetilaca
Kontakt

Prethodna stranica
Pretraga sajta
Pretraga MSKB

Blog Praktikuma
RSS feed 
 
Office Praktikum

Još o Excelu
 


Skoro svakodnevno slušamo
  Radio Paradise:
  eklektični muzički online radio bez reklama!
 

   

Sponzori sajta

  Connectivity by SBB
 
Connectivity by SBB

 

Informacije

NOVOSTI
Novi prilog o Wordu
Tri nova autorska članka
Četiri priloga o Accessu
Opis i uputstvo za alatku YuCirLat '08 (Word)

SADRŽAJ ZA PREUZIMANJE
YuCirLat '08 unapređena alatka za konverziju kodnih rasporeda u Wordu

SKREĆEMO PAŽNJU
Beleške: B(l)oga li ti tvoga!- prilog koji će nekog možda čak i da naljuti
Kako pretraživati MSKB
* a pronaći ćete i još mnogo novih sadržaja...

USKORO SERIJA ČLANAKA O OFFICEU 2010

POZIVAMO VAS
* i prenesite svoja iskustva. Najbolji prilozi će biti objavljeni.



  (C) 2000-2009 Praktikum na Webu
 

Funkcija za proveru JMBG

Nivo:  NIVO 2 - klinite za objašnjenje


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

 

  (C) 2000-2009 Praktikum na Webu

Decembar 2007.


 
 

Vrh stranice  Prethodna stranica  Naslovna strana  Mapa sajta  Pretraga

AFORIZAM ZA DANAS OVIH DANA SLUŠAMO...

Copyright © Praktikum na Webu, 2000-2009; Valinor Design; sva prava pridržana.