Quan enregistreu les vostres accions, Excel normalment registra referències absolutes a les cel·les. (Aquest és el mode d'enregistrament predeterminat.) Però sovint, aquest és el mode d'enregistrament incorrecte . Si utilitzeu el mode d'enregistrament absolut, Excel registra les referències de cel·les reals. Si utilitzeu l'enregistrament relatiu, Excel registra les referències relatives a les cel·les. Segueix llegint per veure la diferència.
Gravació en mode absolut
Seguiu aquests passos per gravar una macro simple en mode absolut. Aquesta macro simplement introdueix noms de tres mesos en un full de treball:
Assegureu-vos que el botó Desenvolupador → Codi → Utilitza referències relatives no estigui ressaltat i, a continuació, trieu Desenvolupador → Codi → Enregistrar macro.
Escriviu Absolut com a nom per a aquesta macro.
Feu clic a D'acord per començar a gravar.
Activeu la cel·la B1 i escriviu Jan en aquesta cel·la.
Mou a la cel·la C1 i escriviu Feb.
Mou a la cel·la D1 i escriviu Mar.
Feu clic a la cel·la B1 per activar-la de nou.
Atureu la gravadora de macros.
Premeu Alt+F11 per activar el VBE.
Examineu el mòdul Mòdul 1.
Excel genera el codi següent:
Subabsolut ()
'
'Macro absoluta
'
Interval ("B1").Seleccioneu
ActiveCell.FormulaR1C1 = "gen"
Interval ("C1").Seleccioneu
ActiveCell.FormulaR1C1 = "Feb"
Interval ("D1").Seleccioneu
ActiveCell.FormulaR1C1 = “Mar”
Interval ("B1").Seleccioneu
End Sub
Quan s'executa, aquesta macro selecciona la cel·la B1 i insereix els noms de tres mesos a l'interval B1:D1. Aleshores, la macro reactiva la cèl·lula B1.
Aquestes mateixes accions es produeixen independentment de quina cel·la estigui activa quan executeu la macro. Una macro registrada utilitzant referències absolutes sempre produeix els mateixos resultats quan s'executa. En aquest cas, la macro sempre introdueix els noms dels tres primers mesos a l'interval B1:D1 al full de treball actiu.
Gravació en mode relatiu
En alguns casos, voleu que la macro gravada funcioni amb les ubicacions de les cel·les d'una manera relativa . És possible que vulgueu que la macro comenci a introduir els noms dels mesos a la cel·la activa. En aquest cas, heu d'utilitzar l'enregistrament relatiu.
Podeu canviar la manera en què Excel registra les vostres accions fent clic al botó Utilitza referències relatives al grup Codi de la pestanya Desenvolupador. Aquest botó és un botó de commutació. Quan el botó apareix ressaltat amb un color diferent, el mode d'enregistrament és relatiu. Quan el botó apareix amb normalitat, estàs gravant en mode absolut.
Podeu canviar el mètode d'enregistrament en qualsevol moment, fins i tot enmig de la gravació.
Per veure com funciona l'enregistrament en mode relatiu, suprimiu el contingut del rang B1:D1 i, a continuació, seguiu els passos següents:
Activa la cèl·lula B1.
Trieu Desenvolupador → Codi → Enregistrar macro.
Anomena aquesta macro Relatiu.
Feu clic a D'acord per començar a gravar.
Feu clic al botó Utilitza referències relatives per canviar el mode d'enregistrament a relatiu.
Quan feu clic a aquest botó, canvia a un color diferent de la resta de la cinta.
Escriviu Jan a la cel·la B1.
Mou a la cel·la C1 i escriviu Feb.
Mou a la cel·la D1 i escriviu Mar.
Seleccioneu la cel·la B1.
Atureu la gravadora de macros.
Tingueu en compte que aquest procediment difereix lleugerament de l'exemple anterior. En aquest exemple, activeu la cel·la inicial abans de començar a gravar. Aquest és un pas important quan enregistreu macros que utilitzen la cel·la activa com a base.
Aquesta macro sempre comença a introduir text a la cel·la activa. Intenta-ho. Moveu el punter de cel·la a qualsevol cel·la i, a continuació, executeu la macro Relativa. Els noms dels mesos sempre s'introdueixen començant a la cel·la activa.
Amb el mode d'enregistrament establert en relatiu, el codi que genera Excel és força diferent del codi generat en mode absolut:
Sub-parent()
'
'Macro relativa
'
ActiveCell.FormulaR1C1 = "gen"
ActiveCell.Offset(0, 1).Range(“A1”).Seleccioneu
ActiveCell.FormulaR1C1 = "Feb"
ActiveCell.Offset(0, 1).Range(“A1”).Seleccioneu
ActiveCell.FormulaR1C1 = “Mar”
ActiveCell.Offset(0, -2).Range(“A1”).Seleccioneu
End Sub
Per provar aquesta macro, activeu qualsevol cel·la excepte B1. Els noms dels mesos s'introdueixen en tres cel·les, començant per la cel·la que heu activat.
Tingueu en compte que el codi generat per la gravadora de macros fa referència a la cel·la A1. Això pot semblar estrany perquè mai no heu utilitzat la cel·la A1 durant l'enregistrament de la macro. Això és simplement un subproducte de la manera com funciona la gravadora de macros.