Kun tallennat toimintojasi, Excel tallentaa tavallisesti absoluuttiset viittaukset soluihin. (Tämä on oletusarvoinen tallennustila.) Mutta melko usein tämä on väärä tallennustila. Jos käytät absoluuttista tallennustilaa, Excel tallentaa todelliset soluviittaukset. Jos käytät suhteellista tallennusta, Excel tallentaa suhteelliset viittaukset soluihin. Jatka lukemista nähdäksesi eron.
Nauhoitus absoluuttisessa tilassa
Noudata näitä ohjeita tallentaaksesi yksinkertaisen makron absoluuttisessa tilassa. Tämä makro yksinkertaisesti syöttää laskentataulukkoon kolmen kuukauden nimeä:
Varmista, että Kehittäjä → Koodi → Käytä suhteellisia viittauksia -painiketta ei ole korostettu, ja valitse sitten Kehittäjä → Koodi → Tallenna makro.
Kirjoita tämän makron nimeksi Absolute.
Aloita tallennus napsauttamalla OK.
Aktivoi solu B1 ja kirjoita siihen soluun Jan.
Siirry soluun C1 ja kirjoita helmikuu.
Siirry soluun D1 ja kirjoita Mar.
Napsauta solua B1 aktivoidaksesi sen uudelleen.
Pysäytä makrotallennin.
Aktivoi VBE painamalla Alt+F11.
Tutki Module1-moduulia.
Excel luo seuraavan koodin:
Subabsoluuttinen()
'
'Absoluuttinen makro
'
Alue ("B1"). Valitse
ActiveCell.FormulaR1C1 = "Tam"
Alue ("C1"). Valitse
ActiveCell.FormulaR1C1 = "helmikuu"
Alue ("D1"). Valitse
ActiveCell.FormulaR1C1 = "Mar"
Alue ("B1"). Valitse
Lopeta ala
Kun tämä makro suoritetaan, se valitsee solun B1 ja lisää kolmen kuukauden nimet alueelle B1:D1. Sitten makro aktivoi solun B1 uudelleen.
Nämä samat toiminnot tapahtuvat riippumatta siitä, mikä solu on aktiivinen, kun suoritat makron. Absoluuttisilla viittauksilla tallennettu makro tuottaa aina samat tulokset suoritettaessa. Tässä tapauksessa makro syöttää aina kolmen ensimmäisen kuukauden nimet aktiivisen laskentataulukon alueelle B1:D1.
Tallennus suhteellisessa tilassa
Joissakin tapauksissa haluat tallennetun makron toimivan solujen sijaintien kanssa suhteellisella tavalla. Haluat ehkä haluta makron alkavan syöttää kuukausien nimiä aktiiviseen soluun. Tässä tapauksessa sinun on käytettävä suhteellista tallennusta.
Voit muuttaa tapaa, jolla Excel tallentaa toimintasi, napsauttamalla Käytä suhteellisia viittauksia -painiketta Kehittäjä-välilehden Koodi-ryhmässä. Tämä painike on vaihtopainike. Kun painike näkyy korostettuna eri värillä, tallennustila on suhteellinen. Kun painike näkyy normaalisti, tallennat absoluuttisessa tilassa.
Voit vaihtaa tallennustapaa milloin tahansa, myös kesken tallennuksen.
Jos haluat nähdä, kuinka suhteellisen tilan tallennus toimii, poista alueen B1:D1 sisältö ja suorita sitten seuraavat vaiheet:
Aktivoi solu B1.
Valitse Kehittäjä → Koodi → Tallenna makro.
Nimeä tämä makro Suhteellinen.
Aloita tallennus napsauttamalla OK.
Napsauta Käytä suhteellisia viittauksia -painiketta vaihtaaksesi tallennustilan suhteelliseksi.
Kun napsautat tätä painiketta, se muuttuu eri väriksi kuin muu nauha.
Kirjoita Jan soluun B1.
Siirry soluun C1 ja kirjoita helmikuu.
Siirry soluun D1 ja kirjoita Mar.
Valitse solu B1.
Pysäytä makrotallennin.
Huomaa, että tämä menettely eroaa hieman edellisestä esimerkistä. Tässä esimerkissä aktivoit aloitussolun ennen kuin aloitat tallennuksen. Tämä on tärkeä vaihe, kun tallennat makroja, jotka käyttävät aktiivista solua perustana.
Tämä makro aloittaa aina tekstin syöttämisen aktiiviseen soluun. Kokeile. Siirrä soluosoitin mihin tahansa soluun ja suorita sitten Suhteellinen makro. Kuukausien nimet syötetään aina aktiivisesta solusta alkaen.
Kun tallennustila on asetettu suhteelliseksi, Excelin luoma koodi eroaa täysin absoluuttisessa tilassa luodusta koodista:
Subsukulainen ()
'
"Suhteellinen makro
'
ActiveCell.FormulaR1C1 = "Tam"
ActiveCell.Offset(0, 1).Alue("A1").Valitse
ActiveCell.FormulaR1C1 = "helmikuu"
ActiveCell.Offset(0, 1).Alue("A1").Valitse
ActiveCell.FormulaR1C1 = "Mar"
ActiveCell.Offset(0, -2).Alue(“A1”).Valitse
Lopeta ala
Testaaksesi tätä makroa, aktivoi mikä tahansa solu paitsi B1. Kuukausien nimet syötetään kolmeen soluun, jotka alkavat aktivoimastasi solusta.
Huomaa, että makrotallentimen luoma koodi viittaa soluun A1. Tämä saattaa tuntua oudolta, koska et koskaan käyttänyt solua A1 makron tallennuksen aikana. Tämä on yksinkertaisesti sivutuote makrotallentimen toiminnasta.