Microsoft Office Excel
uređuje Dragan Grbić

Bookmark and Share
Matična strana sajta
  Novo na sajtu
  Mapa sajta
  Beleške
  Kontakt
  Pretraga MSKB

 Blog Praktikuma
  RSS feed
  P@W @Tw

  Izvezi stranicu u PDF
 
Office Praktikum

Još o Excelu
 


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

 
       

Sponzori sajta

SBB CS 1.6 game server: 82.117.200.1
 
Connectivity by SBB

 
Suština pasijansa
Suština pasijansa
 


 

Informacije

NOVOSTI

I još dva nova priloga o Excelu
Novi prilozi o Wordu
Novi i prilozi u temi "razno o Officeu"
Novi članci o novostima u Officeu 2010!

SADRŽAJI ZA PREUZIMANJE

Lokalizacija Total Commandera 7.51Obe jezičke školjke za popularni program na srpskom sad funkcionišu u bilo kojoj varijanti Windowsa!
RNDalica.ExcelDodatak za Excel 2007/2010 za generisanje slučajnih podataka!
YuConv.ExcelDodatak za Excel 2007/2010 za konverziju pisama!
YuConvNetDodatak za Word 2007/2010 za konverziju pisama i kodnih rasporeda!

SKREĆEMO PAŽNJU

Kako pretraživati MSKB
a pronaći ćete i još mnogo novih sadržaja...

KONTAKT

Da li znate za pravila koja važe pri kontaktu sa nama? Molimo vas da se obavestite o tome!
 
POZIVAMO VAS

i prenesite svoja iskustva. Najbolji prilozi će biti objavljeni.

  (C) 2000-2010 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-2011 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-2011; Valinor Design; sva prava pridržana.