Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 2 odgovora
  • 1.598 pregleda

Najnovija ↓

Obojiti rezultat funkcije 15.04.2019. u 10:52 · pre 91 mesec #1
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
Potpis
xxx
Re: Obojiti rezultat funkcije 15.04.2019. u 13:15 · pre 91 mesec
izmenjeno 1 put, poslednji put Jpeca 15.04.2019. u 13:54
  1. Jpeca15.04.2019. u 13:54zapis iz teksta poruke
#2
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
Potpis
Nije to loše Rembrante, samo što ne bi dodao još malo boje?
Re: Obojiti rezultat funkcije 25.04.2019. u 07:16 · pre 91 mesec #3
Mnogo hvala #Jpeca, ipak nisam uspio to da rijesim, pa sam napisao makro, koji odradjue sve u jednom potezu.
Pozdrav svima
Potpis
xxx
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme