Áno, bol som si takmer istý, že presne tomuto nebudete rozumieť
Pole UF je pole zadaných dát od užívateľa. Tieto dáta sa potom zložia do reťazcov pre filter. Pretože asi bude jednoduchšie, ak budete mať na výber zvlášť znamienka, a hodnoty zadáte aké potrebujete. Keďže sa teda každý jednotlivý filter skladá z 2 stĺpcov (znamienko, data), ale jednotlivý filter je len 1 stĺpec, potrebujeme si vypočítať ktorá časť poľa UF (8 stĺpcov) patrí k práve spracovávanej časti filtra (4 stĺpce)
UF(y, (x - 1) * 2 + 1) vráti znamienko
UF(y, (x - 1) * 2 + 2) vráti dáta filtra
x - je vodorovná súradnica (dosaďte si čísla 1 až 4 a zistíte ako to funguje)
y - je zvislá súradnica
If x = 4 Then dat = CStr(CDbl(UF(y, (x - 1) * 2 + 2))) Else dat = UF(y, (x - 1) * 2 + 2)
Ak spracovávame dátum (X = 4) tak CDbl prevedie dátum na číslo, a CStr to číslo prevedie na string. Ak je X <> 4 tak dostaneme hodnotu rovno z UF.
FF(y, x) = IIf(IsEmpty(UF(y, (x - 1) * 2 + 1)), IIf(IsEmpty(UF(y, (x - 1) * 2 + 2)), Empty, "=" & dat), UF(y, (x - 1) * 2 + 1) & IIf(IsEmpty(UF(y, (x - 1) * 2 + 2)), Empty, dat))
FF je pole hotových reťazcov pre filter, a tie reťazce vypočítame cca takto:
JePrázdneZnamienko = IsEmpty(UF(y, (x - 1) * 2 + 1))
JePrázdneFilterData = IsEmpty(UF(y, (x - 1) * 2 + 2))
Empty = prázdna bunka/reťazec
Ak JePrázdneZnamienko=True tak
------ ak JePrázdneFilterData=True tak vráť Empty
------ ak JePrázdneFilterData=False tak vráť "=" & dat
ak JePrázdneZnamienko=False tak
------ vráť znamienko &
----------------------- ak JePrázdneFilterData=True tak Empty
----------------------- ak JePrázdneFilterData=False tak dat
To som samozrejme nedal zbrucha, ale najskôr som si pri návrhu vytvoril pomocné premenné, ktoré som po zfunkčnení, odstránil a nahradil rovno tým, čo reprezentujú. Urobil som to len kvôli o niečo kratšiemu kódu.
No a zabezpečuje to to, že aj keď nezadáte do znamienka nič ale dáta áno, vloží sa namiesto ničoho "=" + dáta. Ak zadáte znamienko, ale nezadáte dáta, vloží sa len znamienko (pre prípad testu nevyplneného údaju), ak nieje ani znamienko ani data, nevloží sa nič (Empty), ak sú oboje, vložia sa oboje spolu.
PS: Ak to bude pre Vás ľahšie pochopiteľné, tak Vám to vrátim do stavu s pomocnými premennými.
citovat