..:: Nasvet/VBA ::..

Iff funkcija!


Ne uporabljajte je!

Po duši sem in vedno bom C programer in kot takšen želim vsako kodo napisati čim krajše in čim optimalnejše. Ko sem tako videl, da pozna VBA tudi Iff funkcijo sem bil zelo vesel, a ne za dolgo! Poglejmo si zakaj:

Najprej naj razložim čemu služi funkcija Iff. Pomen kretice je sledeč: Immediate If, kar po naše nekako pomeni takojšen če. Mogoče že slutite da naj bi ta funkcija zamenjala kratke if stavke. Res je tako, a pri tem malce škripa.

Najprej si poglejmo uporabo funkcije. Funkcija sprejme tri parametre. Prvi je logičen in če je ta resničen funkcija vrne drugi del, sicer pa tretjega.

' samo za primer... If b = 1 Then a = 13 Else a = 18 End If 'To je popolnoma enakovredno sledeči kodi a = Iff(b = 1, 13, 18) ' Vau, to je precej lepše


Toda poglejmo si slabo stran: Zapišimo podobno kodo:

' samo za primer... If b = 0 Then a = 0 ' deljenje z 0 je NEDEFINIRANO Else a = c / b End If ' TO PA NI VEČ ENAKOVREDNO a = Iff(b = 0, 0, c/b)


VBA vedno izvede obe operaciji a vrne samo tisto, ki ustreza!!! Gorni primer zato tudi vrne napako, če je b enak 0, četudi potem a-ju priredi vrednost izraza c / b.