Како снимити макро у Екцелу - Водич корак по корак

Чак и ако сте тек почетник у свету Екцел ВБА, лако можете снимити макро и аутоматизовати неки свој рад.

У овом детаљном водичу покрити ћу све што требате знати да бисте започели са снимањем и употребом макроа у Екцелу.

Ако сте заинтересовани за учење ВБА на лак начин, погледајте мој Онлине Екцел ВБА обука.

Шта је макро?

Ако сте тек почетник у ВБА, дозволите ми да вам прво кажем шта је макро - на крају ћу наставити да користим овај израз у целом водичу.

Макро је код написан у ВБА (Висуал Басиц фор Апплицатионс) који вам омогућава да покренете комад кода кад год се изврши.

Често ћете пронаћи људе (укључујући и мене) који позивају на ВБА код као макро - било да је генерисан коришћењем снимача макроа или је написан ручно.

Када снимате макро, Екцел помно прати кораке које предузимате и бележи их на језику који разуме - а то је ВБА.

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

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

То значи да чак и ако не знате ништа о ВБА -и, можете аутоматизирати неке задатке само допуштајући Екцел -у да једном записује ваше кораке, а затим их касније поново користити.

Хајдемо сада заронити и видети како снимити макро у Екцелу.

Добијање картице за програмере на врпци

Први корак за снимање макроа је постављање картице Девелопер на траку.

Ако већ видите картицу програмера на траци, пређите на следећи одељак, у супротном следите доле наведене кораке:

  • Кликните десним тастером миша на било коју од постојећих картица на траци и кликните на опцију „Прилагоди врпцу“. Отвориће се дијалошки оквир Екцел Оптионс.
  • У дијалогу Опције програма Екцел имаћете опције Прилагоди траку. Са десне стране, у окну Главне картице, проверите опцију Девелопер.
  • Притисните ОК.

Горе наведени кораци учинили би картицу Девелопер доступном у области траке.

Снимање макроа у Екцелу

Сада када имамо све на свом месту, научимо како снимити макро у Екцелу.

Снимимо врло једноставан макро - онај који бира ћелију и у њу уноси текст „Екцел“. Користим текст „Екцел“ док снимам овај макро, али слободно унесите своје име или било који други текст који вам се свиђа.

Ево корака за снимање овог макроа:

  1. Кликните на картицу Девелопер.
  2. У групи Код кликните на дугме Макро. Ово ће отворити дијалошки оквир „Снимање макроа“.
  3. У дијалогу Снимање макроа унесите назив макроа. Користим име ЕнтерТект. Постоје неки услови именовања које морате следити приликом именовања макроа. На пример, не можете да користите размаке између њих. Обично више волим да своја имена макроа чувам као једну реч, са различитим деловима са великим почетним словом. Такође можете користити доњу црту за раздвајање две речи - као што је Ентер_Тект.
  4. (Опционални корак) Ако желите, можете доделити тастерску пречицу. У овом случају користићемо пречицу Цонтрол + Схифт + Н. Запамтите да ће пречица коју овде доделите заменити све постојеће пречице у вашој радној свесци. На пример, ако доделите пречицу Цонтрол + С, ово нећете моћи да користите за чување радне свеске (уместо тога, сваки пут када је користите, извршиће макро).
  5. У опцији „Чувај макро у“, уверите се да је изабрана „Ова радна свеска“. Овај корак осигурава да је макро део радне свеске. Биће ту када га сачувате и поново отворите, или чак и ако га делите са неким.
  6. (Опционални корак) Унесите опис. Обично то не радим, али ако сте изузетно организовани, можда ћете желети да додате о чему се ради макро.
  7. Притисните ОК. Чим притиснете У реду, почиње да бележи ваше радње у програму Екцел. Можете видети дугме „Заустави снимање“ на картици Девелопер, што указује на то да је снимање макроа у току.
  8. Изаберите ћелију А2.
  9. Унесите текст Екцел (или можете користити своје име).
  10. Притисните тастер Ентер. Ово ће изабрати ћелију А3.
  11. Кликните на дугме Заустави снимање на картици Девелопер.

Честитам!

Управо сте снимили свој први макро у Екцелу. Више ниси макро девица.

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

Идемо сада и тестирајмо овај макро.

Следите доле наведене кораке да бисте тестирали макро:

  1. Избришите текст у ћелији А2. Ово служи за тестирање да ли макро убацује текст у ћелију А2 или не.
  2. Изаберите било коју ћелију - осим А2. Ово служи за тестирање да ли макро бира ћелију А2 или не.
  3. Кликните на картицу Девелопер.
  4. У групи Код кликните на дугме Макрои.
  5. У дијалогу Макро кликните на име макроа - ЕнтерТект.
  6. Кликните на дугме Покрени.

Приметићете да чим притиснете дугме Покрени, текст „Екцел“ се убацује у ћелију А2 и бира се ћелија А3.

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

Дакле, макро прво бира ћелију А2, а затим уноси текст Екцел у њему, а затим бира ћелију А3.

Напомена: Макро можете покренути и помоћу тастерске пречице Цонтрол + Схифт + Н (држите тастере Цонтрол и Схифт, а затим притисните тастер Н). Ово је иста тастерска пречица коју смо доделили макроу при снимању.

Шта Снимање макроа ради у позадини

Сада идемо на Екцел позадину - ВБ Едитор - и видимо шта снимање макроа заиста ради.

Ево корака за отварање ВБ Едитор -а у Екцелу:

  1. Кликните на картицу Девелопер.
  2. У групи Код кликните на дугме Висуал Басиц.

Или можете да користите пречицу на тастатури - АЛТ + Ф11 (држите тастер АЛТ и притисните Ф11), уместо горња два корака. Ова пречица такође отвара исти ВБ Едитор.

Сада, ако први пут видите ВБ Едитор, немојте бити преплављени.

Дозволите ми да вас брзо упознам са анатомијом ВБ Едитор -а.

  • Мени бар: Овде имате све могућности ВБ Едитор -а. Сматрајте ово врпцом ВБА. Садржи команде које можете користити док радите са ВБ Едитор -ом.
  • Тоолбар - Ово је попут траке са алаткама за брзи приступ уређивача ВБ. Долази са неким корисним опцијама и можете му додати још опција. Његова предност је што је опција на траци са алаткама удаљена само један клик.
  • Прозор Пројецт Екплорер - Овде Екцел наводи све радне свеске и све објекте у свакој радној свесци. На пример, ако имамо радну свеску са 3 радна листа, она ће се појавити у Пројецт Екплореру. Овде постоје неки додатни објекти, као што су модули, кориснички обрасци и модули класе.
  • Кодни прозор - Овде се снима или записује ВБА код. За сваки објекат наведен у Истраживачу пројеката постоји прозор кода - као што су радни листови, радне свеске, модули итд. Видећемо касније у овом водичу да снимљени макро улази у кодни прозор модула.
  • Прозор својстава - У овом прозору можете видети својства сваког објекта. Често користим овај прозор за именовање објеката или промену скривених својстава. Можда нећете видети овај прозор када отворите ВБ едитор. Да бисте то приказали, кликните на картицу поглед и изаберите Својства прозор.
  • Непосредни прозор - Често користим непосредни прозор док пишем код. Корисно је када желите да тестирате неке изјаве или док отклањате грешке. Можда неће бити подразумевано видљив и можете га приказати тако што ћете кликнути на картицу Поглед и изабрати опцију Непосредни прозор.

Када смо снимили макро - ЕнтерТект, следеће ствари су се десиле у ВБ Едитор -у:

  • Уметнут је нови модул.
  • Снимљен је макро са именом које смо навели - ЕнтерТект
  • Код је написан у кодном прозору модула.

Дакле, ако двапут кликнете на модул (у овом случају Модул 1), појавиће се кодни прозор као што је приказано испод.

Ево кода који нам је дао макро снимач:

Суб ЕнтерТект () '' ЕнтерТект Мацро '' Пречица на тастатури: Цтрл+Схифт+Н 'Опсег ("А2"). Изаберите АцтивеЦелл.ФормулаР1Ц1 = Опсег "Екцел" ("А3"). Изаберите Енд Суб

У ВБА, свака линија која следи (знак апострофа) се не извршава. То је коментар који је постављен само у информативне сврхе. Ако уклоните првих пет редова овог кода, макро ће и даље радити како се очекује.

Дозволите ми да брзо обухватим шта свака линија кода ради:

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

  • Распон („А2“). Изаберите - Ова линија бира ћелију А2.
  • АцтивеЦелл.ФормулаР1Ц1 = „Екцел“ - овај ред уноси текст Екцел у активну ћелију. Пошто смо као први корак одабрали А2, он постаје наша активна ћелија.
  • Распон („А3“). Изаберите - Ово бира ћелију А3. То се дешава када притиснемо тастер Ентер након уноса текста, што је резултирало одабиром ћелије А3.

Надам се да сте до сада већ разумели како снимити макро у Екцелу.

Имајте на уму да код који је написао макро снимач никако није ефикасан код.

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

Апсолутно вс релативно макро снимање

Већ знате за апсолутне и релативне референце у Екцелу … зар не?

Ако не - прво прочитајте овај водич о референцама.

Прочитајте? Идемо даље.

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

Ако за снимање макроа користите опцију апсолутне референце, ВБА код ће се увек односити на исте ћелије које сте користили. На пример, ако изаберете ћелију А2, унесите текст Екцел и сваки пут притисните Ентер - без обзира на то где се налазите на радном листу и која је ћелија изабрана, ваш код би прво изабрао ћелију А2, унео текстуални Екцел и затим пређите у ћелију А3.

Ако користите опцију релативне референце за снимање макроа, ВБА неће тешко кодирати референце ћелија. Пре би се фокусирао на кретање у поређењу са активном ћелијом. На пример, претпоставимо да сте већ изабрали ћелију А1 и да започињете снимање макроа у режиму релативне референце.

Сада одаберете ћелију А2, унесите текст Екцел и притисните тастер ентер. Сада, када покренете овај макро, он се неће вратити у ћелију А2, већ ће се померити у односу на активну ћелију. На пример, ако је изабрана ћелија К3, она ће се преместити у К4, унети текст Екцел, а затим коначно изабрати ћелију К5.

Сада ћу вам рећи како снимити макро у режиму релативних референци:

  1. Изаберите ћелију А1.
  2. Кликните на картицу Девелопер.
  3. У групи Код кликните на дугме „Користи релативне референце“. Постаће зелена, што значи да је укључено.
  4. Кликните на дугме Сними макро.
  5. У дијалогу Снимање макроа унесите назив макроа. Користим име ЕнтерТектРелРеф.
  6. У опцији Чување макроа у, проверите да ли је изабрана „Ова радна свеска“.
  7. Притисните ОК.
  8. Изаберите ћелију А2.
  9. Унесите текст Екцел (или можете унети своје име).
  10. Притисните тастер Ентер. Ово ће одвести курсор у ћелију А3.
  11. Кликните на дугме Заустави снимање на картици Девелопер.

Ово би снимило макро у релативном референтном режиму.

Сада уради ово.

  1. Изаберите било коју ћелију (осим А1).
  2. Кликните на картицу Девелопер.
  3. У групи Код кликните на дугме Макрои.
  4. У дијалогу Макро кликните на Име макроа - ЕнтерТектРелРеф.
  5. Кликните на дугме Покрени.

Шта се дешава? Да ли се курсор вратио у ћелију А3.

Не би - зато што сте снимили макро у режиму релативне референце. Тако би се курсор померао у односу на активну ћелију. На пример, ако то учините када је ћелија К3 изабрана, она ће унети текст Екцел је ћелија К4 и на крају ће изабрати ћелију К5.

Ево кода који се снима у позадини (прозор кода модула ВБ Едитор модула):

Суб ЕнтерТектРелРеф () '' ЕнтерТектРелРеф Мацро '' АцтивеЦелл.Оффсет (1, 0) .Ранге ("А1"). Изаберите АцтивеЦелл.ФормулаР1Ц1 = "Екцел" АцтивеЦелл.Оффсет (1, 0) .Ранге ("А1"). Изаберите Енд Суб

Имајте на уму да се цео овај код нигде не односи на ћелије К3 или К4. Уместо тога, користи Ацтивецелл за упућивање на изабрану ћелију и Оффсет за кретање у односу на активну ћелију.

Не брините о делу распона („А1“) који код има. То је један од оних непотребних кодова које додаје макро снимач и који нема сврхе и може се уклонити. Код би без њега добро функционисао.

Дугме „Користи релативну референцу“ на картици Девелопер је дугме за пребацивање. Можете га искључити (и вратити на апсолутну референцу) кликом на њега.

Шта макро снимач не може учинити

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

  • Не можете извршити код без одабира објекта. Ако желите да макро снимач пређе на следећи радни лист и истакне све испуњене ћелије у колони А, а да не напусти тренутни радни лист, онда то неће моћи учинити. То је зато што ако вас замолим да то учините, чак ни ви то нећете моћи учинити (без напуштања тренутног листа). А ако то не можете учинити сами, како ће макро снимач снимити ваше радње. У таквим случајевима морате ручно отићи и креирати/уредити код.
  • Не можете да креирате прилагођену функцију помоћу снимача макроа. Помоћу ВБА можете да креирате прилагођене функције које можете користити на радном листу као редовне функције. Ово можете створити ручним писањем кода.
  • Не можете да покрећете кодове на основу догађаја: У ВБА можете користити многе догађаје - попут отварања радне свеске, додавања радног листа, двоструког клика на ћелију итд. Да бисте покренули код повезан са тим догађајем. За то можете користити макро снимач.
  • Не можете да креирате петље помоћу макро снимача. Када ручно унесете код, можете искористити снагу петљи у ВБА (као што су Фор Нект, Фор Евери Нект, До Вхиле, До тилл). Али то не можете учинити када снимате макро.
  • Не можете анализирати услове: Помоћу макро снимача можете проверити услове у коду. Ако ручно напишете ВБА код, можете користити наредбе ИФ Тхен Елсе за анализу стања и покретање кода ако је тачан (или други код ако је нетачан).
  • Не можете проследити аргументе у макро процедури: Када снимите макро, он никада неће имати аргументе. Потпрограм може узети улазне аргументе који се могу користити унутар макроа за извршавање задатка. Док снимате макро, то се не може учинити јер су снимљени макрои независни и нису повезани са било којим другим постојећим макроима.

Проширења датотека са омогућеним макроом

Када снимате макро или ручно пишете ВБА код у Екцелу, морате да сачувате датотеку са наставком датотеке са омогућеним макроима (.клсм).

Пре Екцел 2007, постојао је један једини формат датотеке који је био довољан - .клс.

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

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

Дакле, ако имате макро у радној свесци, морате га сачувати у .клсм формату да бисте задржали тај макро.

Различити начини покретања макроа у Екцелу

До сада смо видели само један начин за покретање макроа у Екцелу - а то је коришћење дијалошког оквира Макро.

Али постоји неколико начина на које можете покренути макрое.

  1. Покрените макро са траке (картица за програмере)
  2. Коришћење пречице на тастатури (коју морате да доделите)
  3. Доделите макро облику
  4. Доделите макро дугмету
  5. Покрените макро из ВБ Едитор -а

Закључак - Снимите макро када се заглави

Већ сам споменуо да је макро снимач користан алат за свакога ко ради са ВБА у Екцелу.

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

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

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

wave wave wave wave wave