Office Guru

A Calculation Options megtévesztő csapdái

2018. szeptember 09. - Office Guru

Az Excel felhasználókat egyik legjobban megviccelő funkciójának címéért valószínűleg esélyesként indulna a Calculation mode, amit két módon tudunk buherálni a programban - egyrészt a Formulas ribbonfül alatt lévő Calculation szekció Calculation Options menüjében:

 calculation1.JPGMásrészt a File menüben megnyitható Excel Options Formulas almenüjében:

calculation2_1.JPGAzt valószínűleg a felhasználók 90%-a pontosan tudja is, hogy ez mire való, azaz ha Automatic calculationt állítunk be, akkor értelemszerűen az Excel újrakalkulál mindent az adott munkafüzetben, amikor egy érték változik vagy valamilyen meghatározott esemény történik (sorok beszúrása például), míg a Manual calculation csak akkor számít újra mindent, ha erre a felhasználó utasítást ad (mondjuk a Calculate sheet funkcióval).

Ennek megfelelően alapesetben nem is szokta senki használni a Manual calculation beállítást, csak ha óriási adathalmazról vagy sok tucat komplex függvényről beszélünk, mert olyan esetekben a manuális kalkuláció rendkívüli módon fel tudja gyorsítani a munkát.

Viszont ez a funkció óriási csapdát is rejt magában, kezdve azzal az alapvetéssel, hogy ez programszintű beállítás, azaz ha egy nagyobb munkafüzetünkben beállítjuk a manuális kalkulációt, akkor az minden más nyitott munkafüzetünkben érvényes lesz - ezt pedig jobb nem elfelejteni.

Még ennél jobban is megviccelhetjük magunkat akkor, ha le is mentjük Manual calculation beállítással az adott munkafüzetünket, mert innentől kezdve bármilyen Excel-fájlt ha megnyitunk, az már Manual beállítással fog megnyílni - erre szintén oda kell figyelni, főleg azért, mert nem biztos, hogy csak saját fájlokkal dolgozunk. Tehát ha a kolléga/vevő stb. küld nekünk egy Excel-fájlt, amiben Manual calculation a beállítás, akkor azzal szépen tönkreteheti egyik-másik munkánkat, ha nem figyelünk.

És akkor még nem is ejtettünk szót a VBA-ról, amelyben az Application Calculation tulajdonságának állítgatásával érhetük el a célunkat, úgymint például

Application.Calculation = xlAutomatic

vagy

Application.Calculation = xlManual

calculation3_1.JPGElég gyakran előfordul kódolás közben, hogy a sebesség érdekében a szubrutin kezdetén kikapcsolásra kerül az automatikus kalkuláció és csak a végén kerül ismét bekapcsolásra - ez pedig azzal a kockázattal jár, hogy ha mondjuk leállítjuk valahol a kódunkat, akkor a beállítás úgy marad, ahogy éppen a kód szerint be volt állítva.

Konkrét megoldás ezen fenti csapdák elkerülésére az ellenőrzésen kívül nagyon nincs, minden munkafüzetünkbe belehegeszteni a Calculation tulajdonságának beállítását elég macerás lehet, ahogy az is, hogy minden gépindításnál automatikus elindul egy Excel-munkafüzetünk, amelyben a tulajdonság is beállításra kerül, hogy utána minden megnyitott munkafüzetünk már automatikusan kalkuláljon.

A legviccesebb azonban a történetben az, hogy egy kvázi bug még ennél is jobban megnehezíti a dolgunkat. Alapesetben ugyebár ha a Formulas ribbonfül alatt vagy az Excel Options alatt (lásd fentebb) vizsgáljuk meg a kalkulációs beállítást, akkor mindkét helyen ugyanazt találjuk. De jelöljünk csak ki több sheetet egyszerre:

calculation4.JPGEzután ha megnézzük a Formulas ribbonfül alatt, akkor a kalkulációs mód még mindig Automatic:

calculation1_1.JPGDe ha a File - Excel Options alatt megnézzük, akkor már Manualon áll a rádiógomb. Persze megnyugodhatunk, alapvetően ekkor is Automatic calculation beállításon vagyunk, de eléggé megtévesztő, hogy a File Options alatt mást mutat, mint a Formulasnál.

calculation5_1.JPG

A bejegyzés trackback címe:

https://officeguru.blog.hu/api/trackback/id/tr3514231555

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása