Excels standardoptagelsestilstand er absolut reference. Når en cellereference i en formel er en absolut reference , justeres den ikke automatisk, når formlen indsættes på en ny placering.
Den bedste måde at forstå, hvordan dette koncept gælder for makroer, er at prøve det. Optag en makro, der tæller rækkerne i et regneark. (Se figuren for et eksempel.)
Dit fortalte regneark, der indeholder to tabeller.
Du kan finde det anvendte eksempeldatasæt her online .
Følg disse trin for at optage makroen:
Sørg for, at celle A1 er valgt.
På fanen Udvikler skal du vælge Optag makro.
Navngiv makroen AddTotal.
Vælg denne projektmappe for at gemme placeringen.
Klik på OK for at starte optagelsen.
På dette tidspunkt registrerer Excel dine handlinger.
Mens Excel optager, skal du vælge celle A16 og skrive Total i cellen.
Vælg den første tomme celle i kolonne D (D16), og skriv = COUNTA(D2:D15).
Denne formel giver en optælling af grental nederst i kolonne D. Du bruger funktionen COUNTA, fordi grennumrene er gemt som tekst.
Klik på Stop optagelse på fanen Udvikler for at stoppe med at optage makroen.
Dit post-totalte arbejdsark.
Det formaterede regneark skal ligne noget som det, der er vist her.
For at se din makro i aktion skal du slette den samlede række, du lige har tilføjet, og afspille din makro ved at følge disse trin:
Vælg Makroer på fanen Udvikler.
Find og vælg den AddTotal-makro, du lige har optaget.
Klik på knappen Kør.
Hvis alt går godt, afspiller makroen dine handlinger til et T og giver dit bord en total. Nu er sagen her. Uanset hvor meget du prøver, kan du ikke få AddTotal-makroen til at fungere på den anden tabel. Hvorfor? Fordi du optog det som en absolut makro.
For at forstå, hvad dette betyder, skal du undersøge den underliggende kode ved at vælge Makroer på fanen Udvikler. Dialogboksen Makro vises.
Dialogboksen Excel Macro.
Vælg makroen Tilføj i alt, og klik på knappen Rediger. Visual Basic Editor åbner og viser den kode, der blev skrevet, da du optog din makro:
Sub AddTotal()
Range("A16"). Vælg
ActiveCell.FormulaR1C1 = "I alt"
Range("D16"). Vælg
ActiveCell.FormulaR1C1 = "=COUNTA(R[-14]C:R[-1]C)"
Slut Sub
Vær særlig opmærksom på de to linjer kode, der vælger område A16 og område D16. Fordi makroen blev optaget i absolut referencetilstand, fortolkede Excel dit områdevalg som absolutte cellereferencer. Med andre ord, uanset hvor din markør er i din projektmappe, når du kører den optagede makro, vil Excel vælge celle A16 og derefter celle D16. I næste afsnit tager du et kig på, hvordan den samme makro ser ud, når den er optaget i relativ referencetilstand.