Evo ti cele funkcije za proveru JMBG pa izvadi ono što ti treba:
Code:
Function Proveri_JMBG(JMBG As String) As String
'
' funkcija vraca tekst sa opisom ispravnosti JMBG
'
' upotreba na radnom listu: =Proveri_JMBG(adr)
' init promenljive
Dim duzina As Integer, zbir As Integer
Dim cifra(1 To 13) As Integer, i As Integer
Dim dan As Integer, mesec As Integer, Godina As String
' init konstante; 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 ili datum!"
Const OK_JMBG = "-1"
' 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 + cifra(3) * 5 + cifra(4) * 4
zbir = zbir + cifra(5) * 3 + cifra(6) * 2 + cifra(7) * 7 + cifra(8) * 6
zbir = zbir + cifra(9) * 5 + cifra(10) * 4 + 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