10 начина да убрзате своје макрое

Како ваши Екцел макрои постају све робуснији и сложенији, можда ћете открити да губе перформансе. Када се говори о макроима, реч перформансе је обично синоним за брзину . Брзина је брзина којом ваше ВБА процедуре обављају своје предвиђене задатке. Следи десет начина да помогнете да ваши Екцел макрои раде на њиховом оптималном нивоу перформанси.

Заустављање прорачуна листова

Да ли сте знали да сваки пут када се промени или манипулише ћелија која утиче на било коју формулу у вашој табели, Екцел поново израчунава цео радни лист? У радним листовима који имају велику количину формула, ово понашање може драстично успорити ваше макрое.

Можете користити својство Апплицатион.Цалцулатион да кажете Екцел-у да се пребаци на режим ручног израчунавања. Када је радна свеска у режиму ручног израчунавања, радна свеска се неће поново израчунати све док изричито не покренете прорачун притиском на тастер Ф9.

Ставите Екцел у режим ручног израчунавања, покрените свој код, а затим се вратите у режим аутоматског израчунавања.

Подмакро1()
Апплицатион.Цалцулатион = клЦалцулатионМануал
 „Поставите свој макро код овде
Апплицатион.Цалцулатион = клЦалцулатионАутоматиц
Енд Суб

Враћање режима израчунавања на клЦалцулатионАутоматиц ће аутоматски покренути поновно израчунавање радног листа, тако да нема потребе да притискате тастер Ф9 након што се ваш макро покрене.

Онемогућавање ажурирања екрана листа

Можда ћете приметити да када се ваши макрои покрећу, екран прилично трепери. Ово треперење је да Екцел покушава да поново исцрта екран како би приказао тренутно стање радног листа. Нажалост, сваки пут када Екцел поново исцртава екран, он заузима меморијске ресурсе.

Можете да користите својство Апплицатион.СцреенУпдатинг да бисте онемогућили ажурирања екрана док се ваш макро не заврши. Онемогућавање ажурирања екрана штеди време и ресурсе, омогућавајући вашем макроу да ради мало брже. Након што ваш макро код заврши са радом, можете поново да укључите ажурирање екрана.

Подмакро1()
Апплицатион.Цалцулатион = клЦалцулатионМануал
Апплицатион.СцреенУпдатинг = Фалсе
 „Поставите свој макро код овде
Апплицатион.Цалцулатион = клЦалцулатионАутоматиц
Апплицатион.СцреенУпдатинг = Тачно
Енд Суб

Након што својство СцреенУпдатинг вратите на Труе, Екцел ће аутоматски покренути поновно исцртавање екрана.

Искључивање ажурирања статусне траке

Статусна трака програма Екцел, која се појављује на дну Екцел прозора, обично приказује напредак одређених радњи у Екцел-у. Ако ваш макро ради са пуно података, статусна трака ће заузети неке ресурсе.

Важно је напоменути да је искључивање ажурирања екрана одвојено од искључивања приказа статусне траке. Статусна трака ће наставити да се ажурира чак и ако онемогућите ажурирање екрана. Можете да користите својство Апплицатион.ДисплаиСтатусБар да привремено онемогућите ажурирања статусне траке, додатно побољшавајући перформансе вашег макроа:

Подмакро1()
Апплицатион.Цалцулатион = клЦалцулатионМануал
Апплицатион.СцреенУпдатинг = Фалсе
Апплицатион.ДисплаиСтатусБар = Фалсе
 „Поставите свој макро код овде
Апплицатион.Цалцулатион = клЦалцулатионАутоматиц
Апплицатион.СцреенУпдатинг = Тачно
Апплицатион.ДисплаиСтатусБар = Тачно
Енд Суб

Рећи Екцелу да игнорише догађаје

Можете да имплементирате макрое као процедуре догађаја, говорећи Екцел-у да покрене одређени код када се радни лист или радна свеска промени.

Понекад стандардни макрои праве промене које ће покренути процедуру догађаја. На пример, ако имате стандардни макро који манипулише неколико ћелија на Схеет1, сваки пут када се промени ћелија на том листу, ваш макро мора да се паузира док се покреће догађај Ворксхеет_Цханге.

Можете додати још један ниво повећања перформанси коришћењем својства ЕнаблеЕвентс да бисте рекли Екцел-у да игнорише догађаје док се ваш макро покреће.

Поставите својство ЕнаблеЕвентс на Фалсе пре него што покренете свој макро. Након што се ваш макро код заврши са радом, својство ЕнаблеЕвентс можете вратити на Труе.

Подмакро1()
Апплицатион.Цалцулатион = клЦалцулатионМануал
Апплицатион.СцреенУпдатинг = Фалсе
Апплицатион.ДисплаиСтатусБар = Фалсе
Апплицатион.ЕнаблеЕвентс = Фалсе
 „Поставите свој макро код овде
Апплицатион.Цалцулатион = клЦалцулатионАутоматиц
Апплицатион.СцреенУпдатинг = Тачно
Апплицатион.ДисплаиСтатусБар = Тачно
Апплицатион.ЕнаблеЕвентс = Тачно
Енд Суб

Сакривање прелома страница

Сваки пут када ваш макро мења број редова, мења број колона или мења подешавање странице радног листа, Екцел је приморан да одвоји време за поновно израчунавање прелома страница приказаних на листу.

Ово понашање можете избећи једноставним сакривањем прелома страница пре него што покренете свој макро.

Подесите својство листа ДисплаиПагеБреакс на Фалсе да бисте сакрили преломе страница. Ако желите да наставите да приказујете преломе страница након покретања макроа, вратите својство листа ДисплаиПагеБреакс на Тачно.

Подмакро1()
Апплицатион.Цалцулатион = клЦалцулатионМануал
Апплицатион.СцреенУпдатинг = Фалсе
Апплицатион.ДисплаиСтатусБар = Фалсе
Апплицатион.ЕнаблеЕвентс = Фалсе
Ацтивесхеет.ДисплаиПагеБреакс = Фалсе
 „Поставите свој макро код овде
Апплицатион.Цалцулатион = клЦалцулатионАутоматиц
Апплицатион.СцреенУпдатинг = Тачно
Апплицатион.ДисплаиСтатусБар = Тачно
Апплицатион.ЕнаблеЕвентс = Тачно
Ацтивесхеет.ДисплаиПагеБреакс = Тачно
Енд Суб

Суспендовање ажурирања изведене табеле

Ако ваш макро манипулише изведеним табелама које садрже велике изворе података, можда ћете доживети лоше перформансе када радите ствари као што је динамичко додавање или померање обртних поља.

Можете да побољшате перформансе свог макроа тако што ћете обуставити поновно израчунавање изведене табеле док се не изврше све промене у пољу. Једноставно поставите својство ПивотТабле.МануалУпдате на Тачно да бисте одложили поновно израчунавање, покрените свој макро код, а затим вратите својство ПивотТабле.МануалУпдате на Фалсе да бисте покренули поновно израчунавање.

Подмакро1()
АцтивеСхеет.ПивотТаблес("ПивотТабле1").МануалУпдате=Тачно
 „Поставите свој макро код овде
АцтивеСхеет.ПивотТаблес("ПивотТабле1").МануалУпдате=Фалсе
Енд Суб

Избегавајте копирање и лепљење

Важно је запамтити да иако Мацро Рецордер штеди време писањем ВБА кода за вас, он не пише увек најефикаснији код. Најбољи пример је како Мацро Рецордер снима било коју радњу копирања и лепљења коју изводите током снимања.

Својим макроима можете дати благи подстицај тако што ћете искључити посредника и извршити директну копију из једне ћелије у одредишну. Овај алтернативни код користи аргумент Дестинатион да заобиђе међуспремник и копира садржај ћелије А1 директно у ћелију Б1.

Опсег("А1").Одредиште копирања:=Опсег("Б1")

Ако треба да копирате само вредности (не форматирање или формуле), можете још више побољшати перформансе избегавањем методе Копирај заједно. Једноставно поставите вредност одредишне ћелије на исту вредност која се налази у изворној ћелији. Овај метод је отприлике 25 пута бржи од коришћења методе копирања:

Опсег("Б1").Вредност = Опсег("А1").Вредност

Ако треба да копирате само формуле из једне ћелије у другу (не вредности или форматирање), можете поставити формулу одредишне ћелије на исту формулу која се налази у изворној ћелији:

Опсег("Б1").Формула = Опсег("А1").Формула

Коришћење изјаве Витх

Када снимате макрое, често ћете манипулисати истим објектом више пута. Можете уштедети време и побољшати перформансе коришћењем наредбе Витх да извршите неколико радњи на датом објекту у једном снимку.

Наредба Витх која се користи у следећем примеру говори Екцел-у да примени све промене форматирања одједном:

    Са опсегом("А1").Фонт
    .Подебљано = Тачно
    .Италиц = Тачно
    .Ундерлине = клУндерлинеСтилеСингле
    Завршити

Ако стекнете навику да делите радње у Витх наредбе, не само да ће ваши макрои радити брже већ ће вам олакшати и читање кода макроа.

Избегавање методе Селецт

Мацро Рецордер воли да користи методу Селецт за експлицитно бирање објеката пре него што предузме радње на њима. Генерално, нема потребе да бирате објекте пре рада са њима. У ствари, можете драматично побољшати перформансе макроа ако не користите метод Селецт.

Након што снимите своје макрое, нека вам постане навика да мењате генерисани код да бисте уклонили методе Селецт. У овом случају, оптимизовани код би изгледао овако:

    Схеетс("Схеет1").Распон("А1").ФормулаР1Ц1 = "1000"
    Схеетс("Схеет2").Распон("А1").ФормулаР1Ц1 = "1000"
    Схеетс("Схеет3").Распон("А1").ФормулаР1Ц1 = "1000"

Имајте на уму да се ништа не бира. Код једноставно користи хијерархију објеката да примени потребне радње.

Ограничавање путовања на радни лист

Други начин да убрзате своје макрое је да ограничите број пута када референцирате податке радног листа у свом коду. Увек је мање ефикасно преузимати податке са радног листа него из меморије. То значи да ће ваши макрои радити много брже ако не морају више пута да комуницирају са радним листом.

На пример, следећи једноставан код приморава ВБА да се непрекидно враћа у Схеетс(“Схеет1”).Ранге(“А1”) да би добио број потребан за поређење које се изводи у изјави Иф:

За месец извештаја = 1 до 12
     Иф Ранге("А1").Валуе = РепортМонтх Онда
     МсгБок 1000000 / РепортМонтх
Крај Ако
Следећи извештај месец

Много ефикаснији метод је да сачувате вредност у Схеетс(“Схеет1”).Ранге(“А1”) у променљиву која се зове МиМонтх. На овај начин, код упућује на променљиву МиМонтх уместо на радни лист:

Дим МиМонтх као цео број
МиМонтх = Опсег("А1").Вредност
За месец извештаја = 1 до 12
Ако је МиМонтх = РепортМонтх Онда
МсгБок 1000000 / РепортМонтх
Крај Ако
Следећи извештај месец

Размислите о коришћењу променљивих за рад са подацима у меморији за разлику од директног упућивања на радне листове.


Обришите цртеже оловком и маркером на својим ПоверПоинт слајдовима

Обришите цртеже оловком и маркером на својим ПоверПоинт слајдовима

Ако сте користили оловку или маркер за цртање на ПоверПоинт слајдовима током презентације, можете да сачувате цртеже за следећу презентацију или да их избришете тако да ћете следећи пут када их покажете почети са чистим ПоверПоинт слајдовима. Пратите ова упутства да бисте избрисали цртеже оловком и маркером: Брисање линија један на […]

Садржај библиотеке стилова у СхареПоинт 2010

Садржај библиотеке стилова у СхареПоинт 2010

Библиотека стилова садржи ЦСС датотеке, датотеке Ектенсибле Стилесхеет Лангуаге (КССЛ) и слике које користе унапред дефинисане главне странице, изгледе страница и контроле у ​​СхареПоинт 2010. Да бисте лоцирали ЦСС датотеке у библиотеци стилова на локацији за објављивање: Изаберите Радње сајта→Прикажи Сав садржај сајта. Појављује се садржај сајта. Библиотека Стил налази се у […]

Форматирајте бројеве у хиљадама и милионима у Екцел извештајима

Форматирајте бројеве у хиљадама и милионима у Екцел извештајима

Немојте претрпати своју публику огромним бројевима. У Мицрософт Екцел-у можете побољшати читљивост својих контролних табли и извештаја тако што ћете форматирати своје бројеве тако да се појављују у хиљадама или милионима.

Како делити и пратити СхареПоинт локације

Како делити и пратити СхареПоинт локације

Научите како да користите СхареПоинт алатке за друштвено умрежавање које омогућавају појединцима и групама да комуницирају, сарађују, деле и повезују се.

Како претворити датуме у јулијанске формате у Екцелу

Како претворити датуме у јулијанске формате у Екцелу

Јулијански датуми се често користе у производним окружењима као временска ознака и брза референца за број серије. Ова врста кодирања датума омогућава продавцима, потрошачима и услужним агентима да идентификују када је производ направљен, а тиме и старост производа. Јулијански датуми се такође користе у програмирању, војсци и астрономији. Различит […]

Како да направите приступну веб апликацију

Како да направите приступну веб апликацију

Можете да креирате веб апликацију у програму Аццесс 2016. Дакле, шта је уопште веб апликација? Па, веб значи да је онлајн, а апликација је само скраћеница за „апликацију“. Прилагођена веб апликација је апликација базе података на мрежи којој се приступа из облака помоћу претраживача. Ви правите и одржавате веб апликацију у верзији за десктоп […]

Трака за брзо покретање у СхареПоинт 2010

Трака за брзо покретање у СхареПоинт 2010

Већина страница у систему СхареПоинт 2010 приказује листу веза за навигацију на траци за брзо покретање дуж леве стране странице. Трака за брзо покретање приказује везе ка садржају истакнутог сајта као што су листе, библиотеке, сајтови и странице за објављивање. Трака за брзо покретање укључује две веома важне везе: Линк за сав садржај сајта: […]

Шта значе поруке о грешци решавача у Екцел-у?

Шта значе поруке о грешци решавача у Екцел-у?

За једноставне проблеме, Солвер у Екцел-у обично брзо проналази оптималне вредности променљиве Решавача за функцију циља. Али, у неким случајевима, Солвер има проблема да пронађе вредности променљиве Солвера које оптимизују функцију циља. У овим случајевима, Солвер обично приказује поруку или поруку о грешци која описује или расправља о проблему који […]

Како уклонити израчуната поља и ставке из Екцел заокретне табеле

Како уклонити израчуната поља и ставке из Екцел заокретне табеле

Можете лако да уклоните израчуната поља и ставке из Екцел заокретне табеле. Да бисте уклонили израчунато поље, кликните на ћелију у изведеној табели. Затим кликните на команду Поља, ставке и скупови на картици Анализа и изаберите Израчунато поље из подменија који се појави. Када Екцел прикаже дијалог Уметање израчунатог поља, изаберите […]

Како означити у СхареПоинт-у

Како означити у СхареПоинт-у

Ознаке су кључне речи које додељујете садржају. Означавање страница за дељење са другима је обележавање на друштвеним мрежама, веома је популарно на вебу и лако је у СхареПоинт-у. Ако сте икада користили сајт као што је Делициоус, већ знате како функционише обележавање на друштвеним мрежама. Како све више људи додељује исте ознаке, ознаке постају начин на који […]