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

  • Деле Ово
Michael Brown

Преглед садржаја

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

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

Овај чланак је ваша улазна тачка у фасцинантан свет Екцел макроа. Покрива основне основе које треба да знате да бисте започели и пружа везе до повезаних детаљних туторијала.

    Шта су макрои у Екцел-у?

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

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

    Прилично често можете чути да људи говоре о „макроу“пратите ове кораке:

    1. Отворите радну свеску у коју желите да увезете макрое.
    2. Отворите Висуал Басиц Едитор.
    3. У Пројецт Екплореру кликните десним тастером миша назив пројекта и изаберите Увези датотеку .
    4. Идите до .бас датотеке и кликните на Отвори .

    Примери Екцел макроа

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

    Откријте све листове у радној свесци

    У овом примеру користимо АцтивеВоркбоок објекат да врати тренутно активну радну свеску и петљу Фор Еацх да прође кроз све листове у радној свесци један по један. За сваки пронађени лист, поставили смо својство Висибле на клСхеетВисибле .

    Суб Унхиде_Алл_Схеетс() Дим вкс као радни лист за сваки радни лист у АцтивеВоркбоок.Ворксхеетс вкс.Висибле = клСхеетВисибле Нект вкс Енд Суб

    Сакријте активни радни лист или га учините веома скривеним

    Да бисте манипулисали тренутно активним листом, користите објекат АцтивеСхеет . Овај пример макроа мења својство Висибле активног листа у клСхеетХидден да би га сакрио. Доучините лист веома скривеним, подесите својство Висибле на клСхеетВериХидден .

    Суб Хиде_Ацтиве_Схеет() АцтивеСхеет.Висибле = клСхеетХидден Енд Суб

    Опозови све спојене ћелије у изабраном опсегу

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

    Суб Унмерге_Целлс() Селецтион.Целлс.УнМерге Енд Суб

    Прикажи оквир за поруку

    Да се ​​прикаже неку поруку вашим корисницима, користите функцију МсгБок . Ево примера таквог макроа у његовом најједноставнијем облику:

    Суб Схов_Мессаге() МсгБок ( "Хелло Ворлд!" ) Енд Суб

    У реалним макроима, оквир за поруке се обично користи за информације или потврде. На пример, пре него што извршите радњу (у нашем случају поништавање спајања ћелија), приказујете оквир са поруком Да/Не . Ако корисник кликне на „Да“, изабране ћелије се опозивају.

    Суб Унмерге_Селецтед_Целлс() Дим Ансвер Ас Стринг Ансвер = МсгБок( „Да ли сте сигурни да желите да опозовете спајање ових ћелија?“ , вбКуестион + вбИесНо, „Опозови спајање ћелија“ ) Ако је одговор = вбИес Онда Селецтион.Целлс.УнМерге Енд Иф Енд Суб

    Да бисте тестирали код, изаберите један или више опсега који садрже спојене ћелије и покрените макро. Појавиће се следећа порука:

    У наставку су линкови ка сложенијим макроима који аутоматизују изазове и време-задаци који троше:

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

    Како заштитити Екцел макрое

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

    Макро за закључавање за преглед

    Да бисте заштитили своје ВБА кодове од неовлашћеног прегледа и уређивања, урадите следеће:

    1. Отворите ВБА Едитор.
    2. У Пројецт Екплорер-у, кликните десним тастером миша на пројекат који желите да закључате и изаберите ВБАПројецт Пропертиес…
    3. У Пројецт Пропертиес дијалог, на картици Протецтион , означите Лоцкпројекат за преглед , унесите лозинку два пута и кликните на ОК .
    4. Сачувајте, затворите и поново отворите своју Екцел датотеку.

    Када покушате да видите код у Висуал Басиц едитору, појавиће се следећи оквир за дијалог. Унесите лозинку и кликните на ОК.

    Да бисте откључали макрое , само поново отворите дијалог Својства пројекта и уклоните квачицу из Закључај пројекат за преглед кутије.

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

    Макро за заштиту лозинком од покретања

    Да бисте заштитили свој макро од извршавања тако да га могу покренути само корисници који знају лозинку, додајте следећи код, замењујући реч „лозинка“ својом правом лозинком :

    Суб Пассворд_Протецт() Затамњена лозинка Као варијанта лозинка = Апплицатион.ИнпутБок( "Молимо унесите лозинку" , "Макро заштићен лозинком" ) Изаберите Цасе пассворд Цасе Ис = Фалсе 'не радите ништа Цасе Ис = "пассворд" 'ваш код овде У другом случају МсгБок „Неисправна лозинка“ Крај Изаберите Крај Суб

    Макро користи функцију ИнпутБок да би затражио од корисника да унесе лозинку:

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

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

    Екцел макро савети

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

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

    Следећи редови ће бити додати на почетак вашег кода (после редова који почињу са Дим или после Суб ред):

    Апплицатион.СцреенУпдатинг = Фалсе Апплицатион.Цалцулатион = клЦалцулатионМануал

    Следеће линије треба додати на крај вашег кода (пре Крај под ):

    Апплицатион.СцреенУпдатинг = Труе Апплицатион.Цалцулатион = клЦалцулатионАутоматиц

    Како разбити ВБА код у више редова

    Када пишете код у ВБА уређивачу, понекад можете да креирате веома дугачке изјаве, тако да морате да скролујете хоризонтално да видите крај линије. Ово не утиче на извршавање кода, али отежава испитивање кода.

    Да бисте поделили дугу наредбу у неколико редова, откуцајте спаце праћено доња цртица (_) на месту где желите да прекинете линију. У ВБА, ово се зове карактер за наставак реда .

    Да бисте исправно наставили код у следећем реду, следите ова правила:

    • Немојте поделите код у средини имена аргумената.
    • Не користите доњу црту да бисте разбили коментаре. За коментаре у више редова, откуцајте апостроф (') на почетку сваког реда.
    • Доња црта мора да буде последњи знак у реду, а не иза ње било шта друго.

    Следећи пример кода показује како да разбијете изјаву у два реда:

    Одговор = МсгБок( "Да ли сте сигурни да желите да опозовете спајање ових ћелија?" , _ вбКуестион + вбИесНо, "Опозови спајање ћелија" )

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

    Када пишете или снимате макро у Екцел-у, обично му се може приступити само из те одређене радне свеске. Ако желите да поново користите исти код у другим радним свескама, сачувајте га у Личној радној свесци макроа. Ово ће вам макро учинити доступним кад год отворите Екцел.

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

    Како поништити радњу макроа

    Након извршавања макроа, његова радња се не може поништити притиском на Цтрл + З нити кликом наДугме Опозови .

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

    Лакши начин је да сачувате активну радну свеску из кода макроа. За ово, једноставно додајте ред испод пре него што дозволите вашем макроу да уради било шта друго:

    АцтивеВоркбоок.Саве

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

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

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

    Да ли сте се икада нашли у ситуацији да Екцел непрестано пита да ли желите да омогућите макрое док дефинитивно знате да у овој радној свесци нема макроа?

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

    • За Ову радну свеску и за сваки појединачни лист, отворите прозор кода, притисните Цтрл + А да изаберете сав код и избришете га (чак и ако изгледа прозор кодапразно).
    • Избришите све корисничке обрасце и модуле класа које радна свеска садржи.

    Тако креирате и користите ВБА макрое у Екцел-у. Захваљујем вам се на читању и надам се да ћемо вас поново видети на нашем блогу следеће недеље!

    као "ВБА". Технички, постоји разлика: макро је део кода, док је Висуал Басиц за апликације (ВБА) програмски језик који је креирао Мицрософт за писање макроа.

    Зашто користити Екцел макрое?

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

    Рецимо, треба да направите недељни извештај за свог супервизора. За ово увозите различите аналитичке податке из неколико или више спољних ресурса. Проблем је у томе што су ти подаци неуредни, сувишни или нису у формату који Екцел може да разуме. То значи да треба да преформатирате датуме и бројеве, скратите додатне размаке и избришете празнине, копирате и налепите информације у одговарајуће колоне, направите графиконе да бисте визуелизовали трендове и урадите много више различитих ствари да би ваш извештај био јасан и лак за коришћење. Сада, замислите да се све ове операције могу извршити за вас одмах једним кликом миша!

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

    Како направити макро у Екцел-у

    Постоје два начина за креирањемакрои у Екцел-у - коришћењем Мацро Рецордер-а и Висуал Басиц Едитор-а.

    Савет. У оквиру програма Екцел, већина операција са макроима се обавља преко картице Девелопер , тако да обавезно додајте картицу Девелопер на своју Екцел траку.

    Снимање макроа

    Чак и ако не знате ништа о програмирању уопште и посебно о ВБА-у, можете лако да аутоматизујете део свог посла само тако што ћете дозволити да Екцел бележи ваше радње као макро. Док извршавате кораке, Екцел пажљиво прати и записује ваше кликове мишем и притиске тастера на ВБА језику.

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

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

    За детаљне информације погледајте Како снимити макро у Екцел-у.

    Писање макро у Висуал Басиц Едитор-у

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

    У ВБА Едитору , не можете само програмирати низ радњи, већ и креирати прилагођенифункције, прикажите сопствене дијалошке оквире, процените различите услове и што је најважније кодирајте логику! Наравно, креирање сопственог макроа захтева извесно познавање структуре и синтаксе ВБА језика, што је ван оквира овог упутства за почетнике. Али не постоји ништа што би вас спречило да поново користите туђи код (рецимо онај који сте нашли на нашем блогу :), а чак ни потпуни почетник у Екцел ВБА не би требало да има потешкоћа са тим!

    Прво, притисните Алт + Ф11 да отворите Висуал Басиц Едитор. Затим уметните код у ова два брза корака:

    1. У Пројецт Екплорер са леве стране, кликните десним тастером миша на циљну радну свеску, а затим кликните на Инсерт &гт; Модул .
    2. У прозору кода са десне стране налепите ВБА код.

    Када завршите, притисните Ф5 да бисте покренули макро.

    За детаљне кораке погледајте Како уметнути ВБА код у Екцел.

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

    Постоји неколико начина да покренете макро у Екцел-у:

    • Да бисте покренули макро са радног листа, кликните на дугме Макрои на картици Програмер или притисните пречицу Алт + Ф8.
    • Да бисте покренули макро из ВБА уређивача, притисните било:
      • Ф5 да бисте покренули цео код.
      • Ф8 да бисте прошли кроз код ред по ред. Ово је веома корисно за тестирање и решавање проблема.

    Поред тога, можете покренути макро тако што ћете кликнути на прилагођено дугме илипритиском на додељену пречицу. За све детаље погледајте Како покренути макрое у Екцел-у.

    Како омогућити макрое у Екцел-у

    Из безбедносних разлога, сви макрои у Екцел-у су подразумевано онемогућени. Дакле, да бисте користили магију ВБА кодова у своју корист, морате да знате како да их омогућите.

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

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

    Како променити подешавања макроа

    Мицрософт Екцел одређује да ли да дозволи или забрани извршавање ВБА кодова у вашим радним свескама на основу подешавања макроа изабраних у Центар за поверење .

    Ево корака за приступ поставкама макроа Екцел-а и њихову промену ако је потребно:

    1. Идите на картицу Датотека и изаберите Опције .
    2. У окну са леве стране изаберите Центар за поверење , а затим кликните на Подешавања центра за поверење... .
    3. У дијалогу Центар за поверење кликните на Подешавања макроа са леве стране, изаберите жељену опцију и кликните на ОК .

    На снимку екрана испод изабрана је подразумевана поставка макроа:

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

    Како прегледати, уредити и отклонити грешке у ВБАкодови у Екцел-у

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

    Да бисте отворили ВБ Едитор, или притисните Алт + Ф11 или кликните на дугме Висуал Басиц на картици Програмер .

    Да бисте погледали и уредите код одређеног макроа, у Пројецт Екплорер са леве стране, двапут кликните на модул који га садржи или кликните десним тастером миша на модул и изаберите Прикажи код . Ово отвара прозор кода у којем можете да измените код.

    Да бисте тестирали и отклонили грешке макроа, користите тастер Ф8. Ово ће вас провести кроз макро код, ред по ред, омогућавајући вам да видите ефекат који свака линија има на вашем радном листу. Линија која се тренутно извршава је означена жутом бојом. Да бисте изашли из режима за отклањање грешака, кликните на дугме Ресет на траци са алаткама (плави квадрат).

    Како да копирате макро у другу радну свеску

    Направили сте макро у једној радној свесци и сада желите да га поново користите иу другим датотекама? Постоје два начина за копирање макроа у Екцел:

    Копирајте модул који садржи макро

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

    1. Отворите обе радне свеске – ону која садржи макро и ону где желите да га копирате.
    2. ОтвориВисуал Басиц Едитор.
    3. У окну Пројецт Екплорер пронађите модул који садржи макро и превуците га у одредишну радну свеску.

    На снимку екрана испод копирамо Модул1 од Књига1 до Књига2 :

    Копирај изворни код макроа

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

    1. Отворите обе радне свеске.
    2. Отворите Висуал Басиц Едитор.
    3. У окну Пројецт Екплорер двапут кликните на модул који садржи макро који сте Желео бих да копирам да отворим прозор кода.
    4. У прозору кода пронађите циљни макро, изаберите његов код (почиње са Суб и завршавајући са Енд Суб ) и притисните Цтрл + Ц да бисте је копирали.
    5. У Пројецт Екплореру пронађите одредишну радну свеску, а затим или уметните нови модул у њу (десним тастером миша кликните на радну свеску и кликните на Инсерт &гт; Модул ) или двапут кликните на постојећи модул да бисте отворили његов прозор кода.
    6. У прозору кода одредишног модула притисните Цтрл + В да бисте налепили код. Ако модул већ садржи неки код, скролујте до последње линије кода, а затим налепите копирани макро.

    Како да избришете макрое у Екцел-у

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

    Брисањемакро из радне свеске

    Да бисте избрисали макро директно из Екцел радне свеске, извршите ове кораке:

    1. На картици Програмер , у Цоде , кликните на дугме Мацрос или притисните пречицу Алт + Ф8.
    2. У дијалогу Макро изаберите макро који желите да уклоните и кликните на Избриши .

    Савети:

    • Да бисте видели све макрое у свим отвореним датотекама, изаберите Све отворене радне свеске са падајуће листе Макрои у .
    • Да бисте могли да избришете макро у радној свесци личних макроа, прво морате да откријете Персонал.клсб.

    Брисање макроа преко Висуал Басиц Едитор-а

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

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

    1. У Пројецт Екплорер , кликните десним тастером миша на модул и изаберите Ремове из контекстног менија.
    2. На питање да ли желите да извезете модул пре него што га уклоните, кликните на Не .

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

    1. Из менија Алатке изаберите Макрои . ТхеПојавиће се оквир за дијалог Макрои .
    2. У падајућој листи Макроси У изаберите пројекат који садржи нежељени макро.
    3. У пољу Име макроа изаберите макро.
    4. Кликните на дугме Избриши .

    Како да сачувате макрое у Екцел-у

    Да бисте сачували макро у Екцел-у, снимљен или написан ручно, само сачувајте радну свеску са омогућеним макроом (*.клмс). Ево како:

    1. У датотеци која садржи макро, кликните на дугме Сачувај или притисните Цтрл + С .
    2. Сачувај као ће се појавити оквир за дијалог. Изаберите Екцел Мацро-Енаблед Воркбоок (*.клсм) са падајуће листе Сачувај као тип и кликните на Сачувај :

    Како да извезете и увезете макрое у Екцел

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

    Извоз макроа

    Да бисте извезли своје ВБА кодове, ово треба да урадите:

    1. Отворите радну свеску која садржи мацрос.
    2. Притисните Алт + Ф11 да бисте отворили Висуал Басиц Едитор.
    3. У Пројецт Екплореру кликните десним тастером миша на Модул који садржи макрое и изаберите Извези датотеку .
    4. Идите до фасцикле у коју желите да сачувате извезену датотеку, именујте датотеку и кликните на Сачувај .

    Увоз макроа

    Да бисте увезли .бас датотеку са ВБА кодовима у ваш Екцел, молимо

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