När du registrerar dina handlingar, registrerar Excel normalt absoluta referenser till celler. (Detta är standardinspelningsläget.) Men ganska ofta är detta fel inspelningsläge. Om du använder absolut inspelningsläge, registrerar Excel faktiska cellreferenser. Om du använder relativ inspelning, registrerar Excel relativa referenser till celler. Fortsätt läsa för att se skillnaden.
Inspelning i absolut läge
Följ dessa steg för att spela in ett enkelt makro i absolutläge. Detta makro anger helt enkelt tre månaders namn i ett kalkylblad:
Se till att knappen Utvecklare → Kod → Använd relativa referenser inte är markerad och välj sedan Utvecklare → Kod → Spela in makro.
Skriv Absolut som namn på detta makro.
Klicka på OK för att börja spela in.
Aktivera cell B1 och skriv Jan i den cellen.
Flytta till cell C1 och skriv feb.
Flytta till cell D1 och skriv Mar.
Klicka på cell B1 för att aktivera den igen.
Stoppa makroinspelaren.
Tryck på Alt+F11 för att aktivera VBE.
Undersök Module1-modulen.
Excel genererar följande kod:
Sub Absolute()
'
' Absolut makro
'
Range(“B1”). Välj
ActiveCell.FormulaR1C1 = "Jan"
Range(“C1”).Välj
ActiveCell.FormulaR1C1 = "Feb"
Range(“D1”). Välj
ActiveCell.FormulaR1C1 = "Mar"
Range(“B1”). Välj
Avsluta Sub
När det körs väljer detta makro cell B1 och infogar de tre månadernas namn i intervallet B1:D1. Sedan återaktiverar makrot cell B1.
Samma åtgärder inträffar oavsett vilken cell som är aktiv när du kör makrot. Ett makro som spelas in med hjälp av absoluta referenser ger alltid samma resultat när det exekveras. I det här fallet anger makrot alltid namnen på de tre första månaderna i intervallet B1:D1 på det aktiva kalkylbladet.
Inspelning i relativt läge
I vissa fall vill du att ditt inspelade makro ska fungera med cellplatser på ett relativt sätt. Du kanske vill att makrot ska börja skriva in månadsnamnen i den aktiva cellen. I ett sådant fall måste du använda relativ inspelning.
Du kan ändra sättet på vilket Excel registrerar dina handlingar genom att klicka på knappen Använd relativa referenser i gruppen Kod på fliken Utvecklare. Den här knappen är en växlingsknapp. När knappen visas markerad i en annan färg är inspelningsläget relativt. När knappen visas normalt spelar du in i absolut läge.
Du kan ändra inspelningsmetoden när som helst, även mitt under inspelningen.
För att se hur relativlägesinspelning fungerar, radera innehållet i intervall B1:D1 och utför sedan följande steg:
Aktivera cell B1.
Välj Utvecklare → Kod → Spela in makro.
Namnge detta makro Relativ.
Klicka på OK för att börja spela in.
Klicka på knappen Använd relativa referenser för att ändra inspelningsläget till relativt.
När du klickar på den här knappen ändras den till en annan färg än resten av bandet.
Skriv Jan i cell B1.
Flytta till cell C1 och skriv feb.
Flytta till cell D1 och skriv Mar.
Välj cell B1.
Stoppa makroinspelaren.
Observera att denna procedur skiljer sig något från föregående exempel. I det här exemplet aktiverar du startcellen innan du börjar spela in. Detta är ett viktigt steg när du spelar in makron som använder den aktiva cellen som bas.
Detta makro börjar alltid skriva in text i den aktiva cellen. Försök. Flytta cellpekaren till valfri cell och kör sedan det relativa makrot. Månadsnamnen skrivs alltid in från den aktiva cellen.
Med inspelningsläget inställt på relativ skiljer sig koden som Excel genererar ganska från koden som genereras i absolut läge:
Sub Relativ()
'
'Relativt makro
'
ActiveCell.FormulaR1C1 = "Jan"
ActiveCell.Offset(0, 1).Range(“A1”).Välj
ActiveCell.FormulaR1C1 = "Feb"
ActiveCell.Offset(0, 1).Range(“A1”).Välj
ActiveCell.FormulaR1C1 = "Mar"
ActiveCell.Offset(0, -2).Range(“A1”).Välj
Avsluta Sub
För att testa detta makro, aktivera valfri cell utom B1. Månadsnamnen skrivs in i tre celler, som börjar med den cell du aktiverade.
Observera att koden som genereras av makroinspelaren refererar till cell A1. Detta kan verka konstigt eftersom du aldrig använde cell A1 under inspelningen av makrot. Detta är helt enkelt en biprodukt av hur makroinspelaren fungerar.