Når du registrerer dine handlinger, registrerer Excel normalt absolutte referencer til celler. (Dette er standardoptagetilstanden.) Men ganske ofte er dette den forkerte optagetilstand. Hvis du bruger absolut optagelsestilstand, registrerer Excel faktiske cellereferencer. Hvis du bruger relativ registrering, registrerer Excel relative referencer til celler. Fortsæt med at læse for at se forskellen.
Optagelse i absolut tilstand
Følg disse trin for at optage en simpel makro i absolut tilstand. Denne makro indtaster blot tre måneders navne i et regneark:
Sørg for, at knappen Udvikler → Kode → Brug relative referencer ikke er fremhævet, og vælg derefter Udvikler → Kode → Optag makro.
Indtast Absolut som navnet på denne makro.
Klik på OK for at begynde optagelsen.
Aktiver celle B1, og skriv Jan i den celle.
Flyt til celle C1, og skriv feb.
Flyt til celle D1, og skriv Mar.
Klik på celle B1 for at aktivere den igen.
Stop makrooptageren.
Tryk på Alt+F11 for at aktivere VBE.
Undersøg Modul 1-modulet.
Excel genererer følgende kode:
Sub Absolute()
'
' Absolut makro
'
Range(“B1”).Vælg
ActiveCell.FormulaR1C1 = "Jan"
Range(“C1”).Vælg
ActiveCell.FormulaR1C1 = "Feb"
Range(“D1”).Vælg
ActiveCell.FormulaR1C1 = "Mar"
Range(“B1”).Vælg
Slut Sub
Når den udføres, vælger denne makro celle B1 og indsætter de tre måneders navne i området B1:D1. Så genaktiverer makroen celle B1.
De samme handlinger forekommer, uanset hvilken celle der er aktiv, når du udfører makroen. En makro optaget ved hjælp af absolutte referencer giver altid de samme resultater, når den udføres. I dette tilfælde indtaster makroen altid navnene på de første tre måneder i området B1:D1 på det aktive regneark.
Optagelse i relativ tilstand
I nogle tilfælde vil du have din optagede makro til at arbejde med celleplaceringer på en relativ måde. Du ønsker måske, at makroen begynder at indtaste månedsnavnene i den aktive celle. I et sådant tilfælde skal du bruge relativ optagelse.
Du kan ændre den måde, hvorpå Excel registrerer dine handlinger, ved at klikke på knappen Brug relative referencer i kodegruppen på fanen Udvikler. Denne knap er en skifteknap. Når knappen vises fremhævet i en anden farve, er optagetilstanden relativ. Når knappen vises normalt, optager du i absolut tilstand.
Du kan til enhver tid ændre optagemetoden, selv midt under optagelsen.
For at se, hvordan relativ tilstandsoptagelse fungerer, skal du slette indholdet af område B1:D1 og derefter udføre følgende trin:
Aktiver celle B1.
Vælg Udvikler → Kode → Optag makro.
Navngiv denne makro Relativ.
Klik på OK for at begynde optagelsen.
Klik på knappen Brug relative referencer for at ændre optagetilstanden til relativ.
Når du klikker på denne knap, skifter den til en anden farve end resten af båndet.
Skriv Jan i celle B1.
Flyt til celle C1, og skriv feb.
Flyt til celle D1, og skriv Mar.
Vælg celle B1.
Stop makrooptageren.
Bemærk, at denne procedure adskiller sig lidt fra det foregående eksempel. I dette eksempel aktiverer du startcellen, før du begynder at optage. Dette er et vigtigt trin, når du optager makroer, der bruger den aktive celle som base.
Denne makro begynder altid at indtaste tekst i den aktive celle. Prøv det. Flyt cellemarkøren til en hvilken som helst celle, og kør derefter den relative makro. Månedsnavnene indtastes altid fra den aktive celle.
Med optagetilstanden indstillet til relativ, er den kode, som Excel genererer, ret forskellig fra den kode, der genereres i absolut tilstand:
Sub relativ()
'
'Relativ makro
'
ActiveCell.FormulaR1C1 = "Jan"
ActiveCell.Offset(0, 1).Range(“A1”).Vælg
ActiveCell.FormulaR1C1 = "Feb"
ActiveCell.Offset(0, 1).Range(“A1”).Vælg
ActiveCell.FormulaR1C1 = "Mar"
ActiveCell.Offset(0, -2).Range(“A1”).Vælg
Slut Sub
For at teste denne makro skal du aktivere en hvilken som helst celle undtagen B1. Månedsnavnene indtastes i tre celler, begyndende med den celle, du aktiverede.
Bemærk, at koden genereret af makrooptageren refererer til celle A1. Dette kan virke mærkeligt, fordi du aldrig brugte celle A1 under optagelsen af makroen. Dette er simpelthen et biprodukt af den måde, makrooptageren fungerer på.