Када снима ваше радње, Екцел обично бележи апсолутне референце на ћелије. (Ово је подразумевани режим снимања.) Али прилично често, ово је погрешан режим снимања. Ако користите апсолутни режим снимања, Екцел бележи стварне референце ћелија. Ако користите релативно снимање, Екцел бележи релативне референце на ћелије. Наставите да читате да бисте видели разлику.
Снимање у апсолутном режиму
Пратите ове кораке да бисте снимили једноставан макро у апсолутном режиму. Овај макро једноставно уноси имена три месеца у радни лист:
Уверите се да дугме Програмер → Код → Користи релативне референце није истакнуто, а затим изаберите Програмер → Код → Сними макро.
Унесите Абсолуте као назив за овај макро.
Кликните ОК да започнете снимање.
Активирајте ћелију Б1 и укуцајте Јан у ту ћелију.
Пређите у ћелију Ц1 и откуцајте Феб.
Пређите у ћелију Д1 и откуцајте Мар.
Кликните на ћелију Б1 да бисте је поново активирали.
Зауставите макро снимач.
Притисните Алт+Ф11 да активирате ВБЕ.
Прегледајте модул Модуле1.
Екцел генерише следећи код:
Подапсолутни()
'
' Апсолутни макро
'
Опсег(“Б1”).Изаберите
АцтивеЦелл.ФормулаР1Ц1 = „Јан“
Опсег(“Ц1”).Изаберите
АцтивеЦелл.ФормулаР1Ц1 = „фебруар“
Опсег(“Д1”).Изаберите
АцтивеЦелл.ФормулаР1Ц1 = „Мар“
Опсег(“Б1”).Изаберите
Енд Суб
Када се изврши, овај макро бира ћелију Б1 и умеће имена три месеца у опсег Б1:Д1. Затим макро поново активира ћелију Б1.
Ове исте радње се дешавају без обзира која је ћелија активна када извршите макро. Макро снимљен коришћењем апсолутних референци увек даје исте резултате када се изврши. У овом случају, макро увек уноси називе прва три месеца у опсегу Б1:Д1 на активном радном листу.
Снимање у релативном режиму
У неким случајевима желите да ваш снимљени макро ради са локацијама ћелија на релативан начин. Можда ћете желети да макро почне да уноси називе месеци у активну ћелију. У том случају морате користити релативно снимање.
Можете да промените начин на који Екцел бележи ваше радње тако што ћете кликнути на дугме Користи релативне референце у групи Код на картици Програмер. Ово дугме је дугме за пребацивање. Када се дугме појави истакнуто другом бојом, режим снимања је релативан. Када се дугме појави нормално, снимате у апсолутном режиму.
Можете променити начин снимања у било ком тренутку, чак и усред снимања.
Да бисте видели како функционише снимање релативног режима, избришите садржај опсега Б1:Д1, а затим извршите следеће кораке:
Активирајте ћелију Б1.
Изаберите Програмер → Код → Сними макро.
Именујте овај макро Релативан.
Кликните ОК да започнете снимање.
Кликните на дугме Користи релативне референце да промените режим снимања у релативан.
Када кликнете на ово дугме, оно се мења у другу боју од остатка траке.
Откуцајте Јан у ћелију Б1.
Пређите у ћелију Ц1 и откуцајте Феб.
Пређите у ћелију Д1 и откуцајте Мар.
Изаберите ћелију Б1.
Зауставите макро снимач.
Приметите да се овај поступак мало разликује од претходног примера. У овом примеру активирате почетну ћелију пре него што почнете да снимате. Ово је важан корак када снимате макрое који користе активну ћелију као основу.
Овај макро увек почиње да уноси текст у активну ћелију. Пробајте. Померите показивач ћелије на било коју ћелију, а затим извршите Релативни макро. Називи месеци се увек уносе почевши од активне ћелије.
Са режимом снимања подешеним на релативан, код који Екцел генерише се прилично разликује од кода генерисаног у апсолутном режиму:
Подрелатив()
'
„Релативни макро
'
АцтивеЦелл.ФормулаР1Ц1 = „Јан“
АцтивеЦелл.Оффсет(0, 1).Ранге(“А1”).Селецт
АцтивеЦелл.ФормулаР1Ц1 = „фебруар“
АцтивеЦелл.Оффсет(0, 1).Ранге(“А1”).Селецт
АцтивеЦелл.ФормулаР1Ц1 = „Мар“
АцтивеЦелл.Оффсет(0, -2).Ранге(“А1”).Селецт
Енд Суб
Да бисте тестирали овај макро, активирајте било коју ћелију осим Б1. Имена месеци се уносе у три ћелије, почевши од ћелије коју сте активирали.
Обратите пажњу да се код који генерише макро снимач односи на ћелију А1. Ово може изгледати чудно јер никада нисте користили ћелију А1 током снимања макроа. Ово је једноставно нуспродукт начина на који снимач макроа ради.