Искључите (или укључите) аутоматско израчунавање - примери кода ВБА

Кад год ажурирате вредност ћелије, Екцел пролази кроз процес поновног израчунавања радне свеске. Када радите директно у програму Екцел, желите да се то догоди 99,9% времена (изузетак је ако радите са изузетно великом радном свеском). Међутим, ово заиста може успорити ваш ВБА код. Добра је пракса да своје прорачуне поставите на ручне на почетку макроа и вратите прорачуне на крај макроа. Ако требате поново израчунати радну свеску, можете ручно рећи Екцелу да израчуна.

Искључите аутоматско израчунавање

Аутоматско израчунавање помоћу макроа можете искључити постављањем на клмануал. Користите следећи део ВБА кода:

1 Апплицатион.Цалцулатион = клМануал

Поново укључите аутоматско израчунавање

Да бисте поново укључили аутоматско израчунавање са поставком клАутоматиц:

1 Апплицатион.Цалцулатион = клАутоматиц

Препоручујем да онемогућите аутоматске прорачуне на самом почетку ваше процедуре и поново омогућите аутоматске прорачуне на крају. То ће изгледати овако:

Онемогућите пример макроа аутоматских прорачуна

12345678 Суб Ауто_Цалцс_Екампле ()Апплицатион.Цалцулатион = клМануал'Уради нештоАпплицатион.Цалцулатион = клАутоматицЕнд Суб

Ручно израчунавање

Када су аутоматски прорачуни онемогућени, можете користити Израчунај команда да приморате Екцел да поново израчуна:

1 Израчунај

Такође можете рећи Екцелу да поново израчуна само појединачни радни лист:

1 Радни листови („лист1“). Израчунајте

Такође можете рећи ВБА да поново израчуна само распон (кликните да бисте прочитали наш чланак о методама израчунавања ВБА)

Ево како би ово могло изгледати унутар макроа:

12345678910111213 Суб Ауто_Цалцс_Екампле_Мануал_Цалц ()Апплицатион.Цалцулатион = клМануал'Уради нешто'РецалцИзрачунај'Учините више ствариАпплицатион.Цалцулатион = клАутоматицЕнд Суб

ВБА поставке - Код за убрзавање

Ако је ваш циљ да убрзате код, размислите и о прилагођавању ових других поставки:

Онемогућавање ажурирања екрана може направити велику разлику у брзини:

1 Апплицатион.СцреенУпдатинг = Нетачно

Искључивање статусне траке такође ће направити малу разлику:

1 Апплицатион.ДисплаиСтатусБар = Нетачно

Ако ваша радна свеска садржи догађаје, требало би и да онемогућите догађаје на почетку ваших процедура (да бисте убрзали код и спречили бесконачне петље!):

1 Апплицатион.ЕнаблеЕвентс = Нетачно

На крају, ваш ВБА код може се успорити када Екцел покуша поново израчунати преломе страница (Напомена: неће утицати на све процедуре). Да бисте искључили ДисплаиПагеБреакс, користите овај ред кода:

1 АцтивеСхеет.ДисплаиПагеБреакс = Нетачно

Ви ће помоћи развој сајта, дељење страницу са пријатељима

wave wave wave wave wave