[ olvejz @ 15.04.2019. 09:52 ] @
Rezultat VBA funkcije je string, koji bih trebao da obojim u zavisnosti od rezultata :
Greska u duzini - crveno
Nepoznat karakter - zuto
funkcija se na radnom listu poziva :
kbr(IDMM)
IDMM su stringovi u nekoj koloni, a kbr je rezultat izracunavanja.
Evo funkcije :
*****************************************************
Public Function kbr(IDMM As String) As String

Dim idmm1 As String
Dim AlfaStr As String, AlfaNum As Long, Alfa1 As String
Dim Suma As Long
Dim Check As Long


' *********************** Ako je duzina IDMM manja od 15 karaktera **************************
If Len(IDMM) <> 15 Then

kbr = "Greska u duzini"

Exit Function
End If
' ********************************

' ************* Ako neki od karaktera IDMM ne postoji u Alfastr *******************
For k = 1 To Len(IDMM)
If InStr("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-", Mid(IDMM, k, 1)) = 0 Then
kbr = "Nepoznat karakter"

Exit Function
End If
Next

' *****************************

AlfaStr = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-"

Suma = 0

For i = 1 To Len(IDMM)
AlfaNum = InStr(1, AlfaStr, Mid(IDMM, i, 1)) - 1
Suma = Suma + AlfaNum * (17 - i)
Next i

Check = (36 - ((Suma - 1) Mod 37))

' **************************************************
If Check = 36 Then


idmm1 = Mid(IDMM, 1, 3) & "1" & Mid(IDMM, 5, Len(IDMM))

Suma = 0

For i = 1 To Len(idmm1)
AlfaNum = InStr(1, AlfaStr, Mid(idmm1, i, 1)) - 1
Suma = Suma + AlfaNum * (17 - i)
Next i

Check = (36 - ((Suma - 1) Mod 37))

IDMM = idmm1

End If
' **********************************************

kbr = Mid(AlfaStr, Check + 1, 1)
Alfa1 = IDMM & kbr



kbr = Alfa1

End Function
[ Jpeca @ 15.04.2019. 12:15 ] @
Bojenje ćelije je komplikovano preko UDF i primerenije rešenje da se koristi Conditional format da se oboji na osnovu rezultata.

Takođe ja bih razmislio o vraćanju standardnih grešaka (sa #) preko CVERR funkcije jer onda korisnik može da koristi IFERROR i slično da radi sa greškama kako mu je pogodno. Ili još bolje da koristiš validaciju za proveru dužine stringa i da li sadržin neispravan karakter u izvornoj koloni

[Ovu poruku je menjao Jpeca dana 15.04.2019. u 13:54 GMT+1]
[ olvejz @ 25.04.2019. 06:16 ] @
Mnogo hvala #Jpeca, ipak nisam uspio to da rijesim, pa sam napisao makro, koji odradjue sve u jednom potezu.
Pozdrav svima